#include<cstdio>
#include<vector>
#include<algorithm>

using namespace std;

//                  876543210987654321
const long long MX=1000000000000000000ll;

int N;
long long K[64];

long long count(long long x,int id){
	long long a=1ll<<id;
	long long t=(x+1)/a;
//	printf("%lld %d %d\n",x,id,(t/2)*a);
	long long res=(t/2)*a;
	if(t%2==1){
		res+=(x+1)%a;
	}
	return res;
}

long long solve(long long W){
	//[A,A+W-1]
	//return A
	if(W==1){
		long long res=0;
		for(int i=N-1;i>=0;i--){
			if(K[i]==1) res+=(1ll<<i);
		}
		if(res>MX) return -1;
		return res;
	}
	long long A=-1;
	long long tmp=0;
	for(int i=N-1;i>=1;i--){
		if(K[i]==W){
			tmp+=(1ll<<i);
			continue;
		}else if(K[i]==0){
			continue;
		}
		tmp+=(1ll<<i);
		long long zeros=W-K[i];
		tmp-=zeros;
		A=tmp;
		break;
	}
//	if(dbg) printf("A=%lld\n",A);
	if(A==-1){
		A=tmp;
	}
	if(A==0) return -1;
	long long B=A+W-1;
	if(B>MX||A>MX) return -1;
	for(int i=0;i<N;i++){
		long long cur=count(B,i)-count(A-1,i);
		if(K[i]!=cur) return -1;
	}
	return A;
}

void solve(){
	if(N==64&&K[63]>0){
		printf("None\n");
		return;
	}
	if(N==1){
		printf("1 1\n");
		return;
	}
	long long A=-1,B=-1;
	for(long long W=K[0]*2-1;W<=K[0]*2+1;W++){
		long long cand=solve(W);
	//	printf("W=%lld->cand=%lld\n",W,cand);
		if(A!=-1&&cand!=-1){
			printf("Many\n");
			return;
		}
		if(A==-1&&cand!=-1){
			A=cand;
			B=cand+W-1;
		}
	}
	if(A==-1){
		printf("None\n");
		return;
	}
	printf("%lld %lld\n",A,B);
}

int main(){
	while(true){
		scanf("%d",&N);
		if(N==0) break;
		for(int i=0;i<N;i++) scanf("%lld",K+i);
		solve();
	}
	return 0;
}