#include<stdio.h>
typedef long long int LI;
#define c11 25
#define c23 30
#define b11 ((1<<c11)-1)
#define b23 ((1<<c23)-1)
#define mv(a,b) (a[0]=b[0],a[1]=b[1],a[2]=b[2])
void i2b(int*a){int i,b[3]; LI c,n=10LL; char*p,q[33]={'0'};
mv(b,a);
for(p=q;0<b[0]+b[1]+b[2]&&p-q<30;*p++='0'+(char)c)
for(c=0LL,i=0; i<3; ++i)
c<<=c23, c+=b[i], b[i]=c/n, c%=n;
}
int add(int*c,int*a,int*b){int z;
*c=c[1]=c[2]=z=0;
z+=a[2]+b[2]; c[2]=z&b23; z>>=c23;
z+=a[1]+b[1]; c[1]=z&b23; z>>=c23;
z+=a[0]+b[0]; c[0]=z&b11;
return z;
}
int mul(int*c,int*a,int*b){ LI z=0LL;
*c=c[1]=c[2]=0;
z+=(LI)a[2]*(LI)b[2];
c[2]=(int)(z&(LI)b23); z>>=(LI)c23;
z+=(LI)a[1]*(LI)b[2]+(LI)a[2]*(LI)b[1];
c[1]=(int)(z&(LI)b23); z>>=(LI)c23;
z+=(LI)a[0]*(LI)b[2]+(LI)a[1]*(LI)b[1]+(LI)a[2]*(LI)b[0];
c[0]=(int)(z&(LI)b11);
return z;
}
int main(void){LI i;
int b[3]={0,0, 2};
int a[3]={0,0,27};
int s[3]={0,0,27};
int t[3];
for (i = 1LL; i < 1099511627776LL/30000LL ; i++){
mul(t,a,a); mul(b,t,a); add(t,s,b);
mv(a,b); mv(s,t);
//printf("%d:",i); i2b(s); printf("/"); i2b(a); puts("");
}
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KdHlwZWRlZiBsb25nIGxvbmcgaW50IExJOwojZGVmaW5lIGMxMSAyNQojZGVmaW5lIGMyMyAzMAojZGVmaW5lIGIxMSAoKDE8PGMxMSktMSkKI2RlZmluZSBiMjMgKCgxPDxjMjMpLTEpCiNkZWZpbmUgbXYoYSxiKSAoYVswXT1iWzBdLGFbMV09YlsxXSxhWzJdPWJbMl0pCnZvaWQgaTJiKGludCphKXtpbnQgaSxiWzNdOyBMSSBjLG49MTBMTDsgY2hhcipwLHFbMzNdPXsnMCd9OwogIG12KGIsYSk7CiAgZm9yKHA9cTswPGJbMF0rYlsxXStiWzJdJiZwLXE8MzA7KnArKz0nMCcrKGNoYXIpYykKICAgIGZvcihjPTBMTCxpPTA7IGk8MzsgKytpKQogICAgICBjPDw9YzIzLCBjKz1iW2ldLCBiW2ldPWMvbiwgYyU9bjsKICBmb3IocC09cTxwO3E8PXA7cHV0Y2hhcigqcC0tKSk7Cn0KaW50IGFkZChpbnQqYyxpbnQqYSxpbnQqYil7aW50IHo7CiAgKmM9Y1sxXT1jWzJdPXo9MDsKICB6Kz1hWzJdK2JbMl07IGNbMl09eiZiMjM7IHo+Pj1jMjM7CiAgeis9YVsxXStiWzFdOyBjWzFdPXomYjIzOyB6Pj49YzIzOwogIHorPWFbMF0rYlswXTsgY1swXT16JmIxMTsKICByZXR1cm4gejsKfQppbnQgbXVsKGludCpjLGludCphLGludCpiKXsgTEkgej0wTEw7CiAgKmM9Y1sxXT1jWzJdPTA7CiAgeis9KExJKWFbMl0qKExJKWJbMl07CiAgY1syXT0oaW50KSh6JihMSSliMjMpOyB6Pj49KExJKWMyMzsKICB6Kz0oTEkpYVsxXSooTEkpYlsyXSsoTEkpYVsyXSooTEkpYlsxXTsKICBjWzFdPShpbnQpKHomKExJKWIyMyk7IHo+Pj0oTEkpYzIzOwogIHorPShMSSlhWzBdKihMSSliWzJdKyhMSSlhWzFdKihMSSliWzFdKyhMSSlhWzJdKihMSSliWzBdOwogIGNbMF09KGludCkoeiYoTEkpYjExKTsKICByZXR1cm4gejsKfQppbnQgbWFpbih2b2lkKXtMSSBpOwogIGludCBiWzNdPXswLDAsIDJ9OwogIGludCBhWzNdPXswLDAsMjd9OwogIGludCBzWzNdPXswLDAsMjd9OwogIGludCB0WzNdOwogIGZvciAoaSA9IDFMTDsgaSA8IDEwOTk1MTE2Mjc3NzZMTC8zMDAwMExMIDsgaSsrKXsKICAgIG11bCh0LGEsYSk7IG11bChiLHQsYSk7IGFkZCh0LHMsYik7CiAgICBtdihhLGIpOyBtdihzLHQpOwogIC8vcHJpbnRmKCIlZDoiLGkpOyBpMmIocyk7IHByaW50ZigiLyIpOyBpMmIoYSk7IHB1dHMoIiIpOwogIH0KICBpMmIocyk7IHB1dHMoIiIpOwogIHJldHVybiAwOwp9