val N:ℕ; val M:ℕ; type int = ℤ[-1,N]; type elem = ℤ[-1,M]; type array = Array[N,elem]; proc maximumElement(a:array,n:int): elem { var m:elem ≔ 0; for var i:int ≔ 0; i < n; i ≔ i+1 do { if a[i] > m then { m ≔ a[i]; } } return m; } proc maximumIndex(a:array,n:int): int { var m:elem ≔ 0; var p:int ≔ 0; for var i:int ≔ 0; i < n; i ≔ i+1 do { if a[i] > m then { p ≔ i; } } return p; } proc main(): () { // execution for N=3 and M=2 // val a = Array[N,elem](1,2,0); // print maximumElement(a,3); // print maximumIndex(a,3); }