tak(x, y, z)
  if (y >= x) return z;
  else return tak(tak(x - 1, y, z),
		  tak(y - 1, z, x),
		  tak(z - 1, x, y));

doit(a, b, c) local i, result;
{
  i= 100;
  while (i > 0) {
    result= tak(a, b, c);
    i= i-1;
  }
  return result;
}

main()
  return doit(18, 12, 6);
