/************************************************
Grundlegende Algorithmen mit Java,
http://algorithmen-und-problemloesungen.de/
Copyright @2007-2008 by Doina Logofatu
************************************************/

import java.io.*;
import java.util.*;
import java.math.BigInteger;

public class P05Ack {
  
    private static final String FileInputName = "ack.in";
    private static final String FileOutputName = "ack.out";
    
    private static final BigInteger ZERO = BigInteger.ZERO;
    private static final BigInteger  ONE = BigInteger.ONE;
    
    private static BigInteger ack(BigInteger n, BigInteger m){
        if(n.equals(ZERO)) return ONE.add(m);
        else if(m.equals(ZERO)) return ack(n.subtract(ONE), ONE);
        else return ack(n.subtract(ONE), ack(n, m.subtract(ONE)));
    }
    
    /**
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException {
        Scanner sc = null;
        PrintStream out= null;
        try {            
            out = new PrintStream(new File(FileOutputName));
            sc = new Scanner(new File(FileInputName ));
            while(sc.hasNextLong()) {
                long n = sc.nextLong();
                if(!sc.hasNextLong()) break;
                long m = sc.nextLong();

                /*out.print("Ack(");
                out.print(n);
                out.print(", ");
                out.print(m);
                out.print(")= ");
                out.println(ack(n, m));
                */

                out.println("Ack(" + n + ", " + m + ")= " + 
                            ack( new BigInteger("" + n), new BigInteger("" + m)));
            }
        }
        finally {
            if (sc!=null) {
                sc.close();
            }
            if(out!=null) {
                out.close();                
            }            
        }        
    }

}



