sig
  val to_1d : int -> int -> int -> int -> int
  val of_1d : '-> int -> int -> int * int
  val set : int -> int -> 'a array -> int -> int -> '-> unit
  val get : int -> int -> 'a array -> int -> int -> 'a
  val init : int -> int -> (int -> int -> 'a) -> 'a array
  val iteri : int -> (int -> int -> '-> unit) -> 'a array -> unit
  val mapi : int -> (int -> int -> '-> 'b) -> 'a array -> 'b array
  val distance_to_boundary : int -> int -> int -> int
end