+ackerman(m, n){
+ if(m ==0){
+ return n+1;
+ } else {
+ if(m>0 && n == 0){
+ return ackerman(m-1, 1);
+ } else {
+ return ackerman(m-1, ackerman(m, n-1));
+ }
+ }
+}
+
+hyper(n, a, b){
+ if(n == 0){ return b + 1;
+ } else { if(b == 0 && n == 1){ return a;
+ } else { if(b == 0 && n == 2){ return 0;
+ } else { if(b == 0 && n >= 3){ return 1;
+ } else { return hyper(n-1, a, hyper(n, a, b - 1));
+ }}}}
+}
+
+main(){
+ print("s(3)=", hyper(0, 3, 3));
+ print("3+3=", hyper(1, 3, 3));
+ print("3*3=", hyper(2, 3, 3));
+ print("3^4=", hyper(3, 3, 4));
+ print("2|3=", hyper(4, 2, 3));
+
+ print("a(0, 0)=", ackerman(0, 0));
+ print("a(0, 1)=", ackerman(0, 1));
+ print("a(0, 2)=", ackerman(0, 2));
+ print("a(0, 3)=", ackerman(0, 3));
+
+ print("a(1, 0)=", ackerman(1, 0));
+ print("a(1, 1)=", ackerman(1, 1));
+ print("a(1, 2)=", ackerman(1, 2));
+ print("a(1, 3)=", ackerman(1, 3));
+
+ print("a(2, 0)=", ackerman(2, 0));
+ print("a(2, 1)=", ackerman(2, 1));
+ print("a(2, 2)=", ackerman(2, 2));
+ print("a(2, 3)=", ackerman(2, 3));
+
+ print("a(3, 0)=", ackerman(3, 0));
+ print("a(3, 1)=", ackerman(3, 1));
+ print("a(3, 2)=", ackerman(3, 2));
+ print("a(3, 3)=", ackerman(3, 3));
+
+ print("a(4, 0)=", ackerman(4, 0));
+/* print("a(4, 1)=", ackerman(4, 1));
+ print("a(4, 2)=", ackerman(4, 2));
+ print("a(4, 3)=", ackerman(4, 3));*/
+}