#include <perms.h>

//          Edinburgh IMP77 Compiler - Version 8.4
//
//     1  %begin

int main(int argc, char **argv) { /*%begin*/
  _imp_initialise(argc, argv);

  //     2    %routine do(%integerfn fn(%integer p,q,r))

  void DO(int (*FN)(int P, int Q, int R)) {
    //     3      %integer i

    int I;

    //     4      i = fn(1,2,3)

    I = FN(1, 2, 3);

    //     5    %end

    return;
  } /* end of DO */

  //     6
  //     7    %integerfn average(%integer a,b,c)

  int AVERAGE(int A, int B, int C) {
    //     8      %result = (a+b+c)//3

    return ((long)(A + B + C) / (long)3);

    //     9    %end

  } /* end of AVERAGE */

  //    10
  //    11    do(average)

  DO(AVERAGE);

  //    12  %endofprogram

  _imp_stop(0);
  return 0;
end_0:;
}