(* Josephus problem *) block var k, m, n: integer; unit Josephus: function (n, k, m: integer): integer; var a, j: integer; begin j := m; for a := m + 1 to n do j := (j + k) mod a od; result := j; end Josephus; begin n := 41; k := 3; m := 0; writeln("N = ", n: 1, ". K = ", k: 1, ". Final survivor = ", Josephus(n, k, m): 1, "."); end;