public class sum{
	public static void main(String arg[]){
		int a[] = null;
		int b[] = null;
		if (arg.length>1){
			try{
				a = toDecimalArray(arg[0]);
				b = toDecimalArray(arg[1]);
			} catch(NumberFormatException e){
				System.err.println("Invalid input");
				System.exit(1);
			} 
		} else{
			System.err.println("Usage: sum a b");
			System.exit(1);
		}
		int c[] = sum(a, b);

		int max = trueLength(a);
		if (trueLength(b) > max) max = trueLength(b);
		if (trueLength(c) > max) max = trueLength(c);
		System.out.println(toDecimalString(a, max));
		System.out.println(toDecimalString(b, max));
		System.out.println(toDecimalString(c, max));
	}

	static int trueLength(int x[]){
		int n = x.length;
		while (n > 0 && x[n-1] == 0) n--;
		return(n);
	}

	static int[] toDecimalArray(String s) throws NumberFormatException{
		s.trim();
		int n = s.length();
		int a[] = new int[n];
		for (int i=0;i<n;i++){
			char c = s.charAt(i);
			if ('0' <= c && c<= '9') a[n-i-1] = c - '0';
			else throw new NumberFormatException();
		}
		return(a);
	}

	static String toDecimalString(int a[]){
		int n = trueLength(a);
		while (n > 0 && a[n-1] == 0){
			n--;
		}
		// now n = 0 if a = o, otherwise a has n digits
		if (n == 0) return("o");
		String s = "";
		for (int i=n;i>0;i--){
			s = s + (char) ('0' + a[i-1]);
		}
		return(s);
	}

	static String toDecimalString(int a[], int w){
		String s = "";
		int n = trueLength(a);
		int k = w-n;
		if (n == 0){
			k--;
		}
		if (w > n){
			for (int i=0;i<k;i++){
				s += ' ';
			}
		}
		s += toDecimalString(a);
		return(s);
	}

	static String toDecimalString(int a[]){
		int n = a.length;
		while (n > 0 && a[n-1] == 0){
			n--;
		}
		if (n == 0) return("0");
		String s ="";
		for (int i=n;i>0;i--){
			s = s + (char)('0' + a[i-1

	static int [] sum(int x[], int y[]){
		if (y.length > x.length){
			int tmp[] = x;
			x = y;
			y = tmp;
		}
		int z[] = new int[x.length+1];
		int carry = 0;
		for (int i=0;i<y.length;i++){
			int s = x[i] + y[i] + carry;
			z[i] = s % 10;
			carry = s/10;
		}
		for (int i=y.length;i<x.length;i++){
			int s = x[i] + carry;
			z[i] = s % 10;
			carry = s/10;
		}
		z[x.length] = carry;
		return(z);
	}
}
		