#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
using namespace std;
int main()
{
    __int64 left,right,mid,mid2;
    string str,ans,ans2;
    cin>>str;
    while (str=="start")
    {
        left=1;
        printf("? %d %d\n",1,2); fflush(stdout);
        cin>>ans;
        printf("? %d %d\n",2,3); fflush(stdout);
        cin>>ans2;
        if (ans=="e"||ans2=="e") break;
        else if (ans=="x"&&ans2=="x")
        {
            printf("! %d\n",1); fflush(stdout);
        }
        else if (ans=="x"&&ans2=="y")
        {
            printf("! %d\n",2); fflush(stdout);
        }
        else
        {
            left=left*2;
            while (left<1000000000)
            {
                right=left*2;
                printf("? %I64d %I64d\n",left,right); fflush(stdout);
                cin>>ans;
                if (ans=="e") break;
                if (ans=="x") break;
                if (ans=="y") left=right;
            }
            right=left*2;
            left--; right++;
            //cout<<left<<" "<<right<<endl;
            while (left<right)
            {
                mid=(left+right)/2; mid2=mid*2;
                printf("? %I64d %I64d\n",mid,mid2); fflush(stdout);
                cin>>ans;
                if (ans=="e") break;
                if (ans=="x") left=mid+1;
                if (ans=="y") right=mid;
            }
            left--;
            printf("! %I64d\n",left); fflush(stdout);
        }
        cin>>str;
        if (str=="end") break;
    }
/*
    int a,x1,x2;
    cin>>a;
    for (int x=1; x<=4*a; x++)
    {
        x1=x%a;
        x2=(2*x)%a;
        if (x1>=x2) cout<<"x"; else cout<<"y";
    }
*/
}


#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
using namespace std;
__int64 leftp,rightp,mid,mid2;
int main()
{
    string str,ans,ans2;
    cin>>str;
    while (str=="start")
    {
        leftp=1;
        printf("? %d %d\n",1,2);
        cin>>ans;
        printf("? %d %d\n",2,3);
        cin>>ans2;
        if (ans=="e"||ans2=="e") break;
        else if (ans=="x"&&ans2=="x") printf("! %d\n",1);
        else if (ans=="x"&&ans2=="y") printf("! %d\n",2);
        else
        {
            leftp=leftp*2;
            while (leftp<1000000000)
            {
                rightp=leftp*2;
                printf("? %I64d %I64d\n",leftp,rightp);
                cin>>ans;
                if (ans=="e") break;
                if (ans=="x") break;
                if (ans=="y") leftp=rightp;
            }
            rightp=leftp*2;
            leftp--; rightp++;
            //cout<<left<<" "<<right<<endl;
            while (leftp<rightp)
            {
                mid=(leftp+rightp)/2; mid2=mid*2;
                printf("? %I64d %I64d\n",mid,mid2);
                cin>>ans;
                if (ans=="e") break;
                if (ans=="x") leftp=mid+1;
                if (ans=="y") rightp=mid;
            }
            leftp--;
            printf("! %I64d\n",leftp);
        }
        cin>>str;
        if (str=="end") break;
    }
    fflush(stdout);
/*
    int a,x1,x2;
    cin>>a;
    for (int x=1; x<=4*a; x++)
    {
        x1=x%a;
        x2=(2*x)%a;
        if (x1>=x2) cout<<"x"; else cout<<"y";
    }
*/
}


#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
using namespace std;
int main()
{
    __int64 left,right,mid,mid2;
    string str,ans,ans2;
    cin>>str;
    while (str=="start")
    {
        left=1;
        printf("? %d %d\n",0,1); fflush(stdout);
        cin>>ans;
        if (ans=="x") printf("! %d\n",1);
        else
        {
            while (left<1000000000)
            {
                right=left*2;
                printf("? %I64d %I64d\n",left,right); fflush(stdout);
                cin>>ans;
                if (ans=="e") break;
                if (ans=="x") break;
                if (ans=="y") left=right;
            }
            right=left*2;
            if (left>1) left--;
            if (right<1000000000) right++;
            if (right>1000000001) right=1000000001;
            //cout<<left<<" "<<right<<endl;
            while (left<right)
            {
                mid=(left+right)/2; mid2=mid*2;
                //cout<<left<<" "<<right<<" "<<mid<<endl;
                printf("? %I64d %I64d\n",mid,mid2); fflush(stdout);
                cin>>ans;
                if (ans=="e") break;
                if (ans=="x") left=mid+1;
                if (ans=="y") right=mid;
            }
            if (left!=1000000000) left--;
            printf("! %I64d\n",left); fflush(stdout);
        }
        cin>>str;
        if (str=="end") break;
    }
}


#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
using namespace std;
int main()
{
    __int64 left,right,mid,mid2;
    string str,ans,ans2;
    cin>>str;
    while (str=="start")
    {
        left=1;
        printf("? %d %d\n",1,2);
        cin>>ans;
        printf("? %d %d\n",2,3);
        cin>>ans2;
        if (ans=="e"||ans2=="e") break;
        else if (ans=="x"&&ans2=="x") printf("! %d\n",1);
        else if (ans=="x"&&ans2=="y") printf("! %d\n",2);
        else
        {
            left=left*2;
            while (left<1000000000)
            {
                right=left*2;
                printf("? %I64d %I64d\n",left,right);
                cin>>ans;
                if (ans=="e") break;
                if (ans=="x") break;
                if (ans=="y") left=right;
            }
            right=left*2;
            left--; right++;
            //cout<<left<<" "<<right<<endl;
            while (left<right)
            {
                mid=(left+right)/2; mid2=mid*2;
                printf("? %I64d %I64d\n",mid,mid2);
                cin>>ans;
                if (ans=="e") break;
                if (ans=="x") left=mid+1;
                if (ans=="y") right=mid;
            }
            left--;
            printf("! %I64d\n",left);
        }
        cin>>str;
        if (str=="end") break;
    }
    fflush(stdout);
/*
    int a,x1,x2;
    cin>>a;
    for (int x=1; x<=4*a; x++)
    {
        x1=x%a;
        x2=(2*x)%a;
        if (x1>=x2) cout<<"x"; else cout<<"y";
    }
*/
}


#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
using namespace std;
int main()
{
    __int64 left,right,mid,mid2;
    string str,ans,ans2;
    cin>>str;
    while (str=="start")
    {
        left=1;
        printf("? %d %d\n",0,1); fflush(stdout);
        cin>>ans;
        if (ans=="x") printf("! %d\n",1);
        else
        {
            while (left<1000000000)
            {
                right=left*2;
                printf("? %I64d %I64d\n",left,right); fflush(stdout);
                cin>>ans;
                if (ans=="e") break;
                if (ans=="x") break;
                if (ans=="y") left=right;
            }
            right=left*2;
            if (left>1) left--;
            if (right<1000000000) right++;
            if (right>1000000001) right=1000000001;
            //cout<<left<<" "<<right<<endl;
            while (left<right)
            {
                mid=(left+right)/2; mid2=mid*2;
                //cout<<left<<" "<<right<<" "<<mid<<endl;
                printf("? %I64d %I64d\n",mid,mid2); fflush(stdout);
                cin>>ans;
                if (ans=="e") break;
                if (ans=="x") left=mid+1;
                if (ans=="y") right=mid;
            }
            //if (left!=1000000000) left--;
            printf("! %I64d\n",left); fflush(stdout);
        }
        cin>>str;
        if (str=="end") break;
    }
}


#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
using namespace std;
int main()
{
    __int64 left,right,mid,mid2;
    string str,ans,ans2;
    cin>>str;
    while (str=="start")
    {
        left=1;
        printf("? %d %d\n",1,2);
        cin>>ans;
        printf("? %d %d\n",2,3);
        cin>>ans2;
        if (ans=="e"||ans2=="e") break;
        else if (ans=="x"&&ans2=="x") printf("! %d\n",1);
        else if (ans=="x"&&ans2=="y") printf("! %d\n",2);
        else
        {
            left=left*2;
            while (left<=1000000000)
            {
                right=left*2;
                printf("? %I64d %I64d\n",left,right);
                cin>>ans;
                if (ans=="e") break;
                if (ans=="x") break;
                if (ans=="y") left=right;
            }
            right=left*2;
            left--; right++;
            //cout<<left<<" "<<right<<endl;
            while (left<right)
            {
                mid=(left+right)/2; mid2=mid*2;
                printf("? %I64d %I64d\n",mid,mid2);
                cin>>ans;
                if (ans=="e") break;
                if (ans=="x") left=mid+1;
                if (ans=="y") right=mid;
            }
            left--;
            printf("! %I64d\n",left);
        }
        cin>>str;
        if (str=="end") break;
    }
    fflush(stdout);
/*
    int a,x1,x2;
    cin>>a;
    for (int x=1; x<=4*a; x++)
    {
        x1=x%a;
        x2=(2*x)%a;
        if (x1>=x2) cout<<"x"; else cout<<"y";
    }
*/
}


#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
using namespace std;
int main()
{
    __int64 left,right,mid,mid2;
    string str,ans,ans2;
    cin>>str;
    while (str=="start")
    {
        left=1;
        printf("? %d %d\n",0,1); fflush(stdout);
        cin>>ans;
        if (ans=="x") printf("! %d\n",1);
        else
        {
            while (left<1000000000)
            {
                right=left*2;
                printf("? %I64d %I64d\n",left,right); fflush(stdout);
                cin>>ans;
                if (ans=="e") break;
                if (ans=="x") break;
                if (ans=="y") left=right;
            }
            right=left*2;
            if (left>1) left--;
            if (right<1000000000) right++;
            if (right>1000000000) right=1000000000;
            //cout<<left<<" "<<right<<endl;
            while (left<right)
            {
                mid=(left+right)/2; mid2=mid*2;
                //cout<<left<<" "<<right<<" "<<mid<<endl;
                printf("? %I64d %I64d\n",mid,mid2); fflush(stdout);
                cin>>ans;
                if (ans=="e") break;
                if (ans=="x") left=mid+1;
                if (ans=="y") right=mid;
            }
            if (left!=1000000000) left--;
            printf("! %I64d\n",left); fflush(stdout);
        }
        cin>>str;
        if (str=="end") break;
    }
}


#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
using namespace std;
int main()
{
    __int64 left,right,mid,mid2;
    string str,ans,ans2;
    cin>>str;
    while (str=="start")
    {
        left=1;
        printf("? %d %d\n",0,1); fflush(stdout);
        cin>>ans;
        if (ans=="x") printf("! %d\n",1);
        else
        {
            while (left<1000000000)
            {
                right=left*2;
                printf("? %I64d %I64d\n",left,right); fflush(stdout);
                cin>>ans;
                if (ans=="e") break;
                if (ans=="x") break;
                if (ans=="y") left=right;
            }
            right=left*2;
            left--; right++;
            if (left<1) left=1;
            if (right>1000000001) right=1000000001;
            //cout<<left<<" "<<right<<endl;
            while (left<right)
            {
                mid=(left+right)/2; mid2=mid*2;
                //cout<<left<<" "<<right<<" "<<mid<<endl;
                printf("? %I64d %I64d\n",mid,mid2); fflush(stdout);
                cin>>ans;
                if (ans=="e") break;
                if (ans=="x") left=mid+1;
                if (ans=="y") right=mid;
            }
            left--;
            printf("! %I64d\n",left); fflush(stdout);
        }
        cin>>str;
        if (str=="end") break;
    }
}


#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
using namespace std;
int main()
{
    __int64 left,right,mid,mid2;
    string str,ans,ans2;
    cin>>str;
    while (str=="start")
    {
        left=1;
        printf("? %d %d\n",0,1); fflush(stdout);
        cin>>ans;
        if (ans=="x") printf("! %d\n",1);
        else
        {
            while (left<1000000000)
            {
                right=left*2;
                printf("? %I64d %I64d\n",left,right); fflush(stdout);
                cin>>ans;
                if (ans=="e") break;
                if (ans=="x") break;
                if (ans=="y") left=right;
            }
            right=left*2;
            if (left>1) left--;
            if (right<1000000000) right++;
            //cout<<left<<" "<<right<<endl;
            while (left<right)
            {
                mid=(left+right)/2; mid2=mid*2;
                printf("? %I64d %I64d\n",mid,mid2); fflush(stdout);
                cin>>ans;
                if (ans=="e") break;
                if (ans=="x") left=mid+1;
                if (ans=="y") right=mid;
            }
            left--;
            printf("! %I64d\n",left); fflush(stdout);
        }
        cin>>str;
        if (str=="end") break;
    }
/*
    int a,x1,x2;
    cin>>a;
    for (int x=1; x<=4*a; x++)
    {
        x1=x%a;
        x2=(2*x)%a;
        if (x1>=x2) cout<<"x"; else cout<<"y";
    }
*/
}


#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
using namespace std;
int main()
{
    __int64 left,right,mid,mid2;
    string str,ans,ans2;
    cin>>str;
    while (str=="start")
    {
        left=1;
        printf("? %d %d\n",0,1); fflush(stdout);
        cin>>ans;
        if (ans=="x") printf("! %d\n",1);
        else
        {
            while (left<1000000000)
            {
                right=left*2;
                printf("? %I64d %I64d\n",left,right); fflush(stdout);
                cin>>ans;
                if (ans=="e") break;
                if (ans=="x") break;
                if (ans=="y") left=right;
            }
            right=left*2;
            left--; right++;
            //cout<<left<<" "<<right<<endl;
            while (left<right)
            {
                mid=(left+right)/2; mid2=mid*2;
                printf("? %I64d %I64d\n",mid,mid2); fflush(stdout);
                cin>>ans;
                if (ans=="e") break;
                if (ans=="x") left=mid+1;
                if (ans=="y") right=mid;
            }
            left--;
            printf("! %I64d\n",left); fflush(stdout);
        }
        cin>>str;
        if (str=="end") break;
    }
/*
    int a,x1,x2;
    cin>>a;
    for (int x=1; x<=4*a; x++)
    {
        x1=x%a;
        x2=(2*x)%a;
        if (x1>=x2) cout<<"x"; else cout<<"y";
    }
*/
}


#include <bits/stdc++.h>
#define ll long long
#define spd ios::sync_with_stdio(false);cin.tie(0);
using namespace std;

int main()
{
    while(1){
        string str;
        cin>>str;
        if(str.compare("start")==0){
            ll l=0,r=1;
            while(1){
                cout<<"? "<<l<<" "<<r<<endl;
                char val;
                cin>>val;
                if(val=='x'){
                    break;
                }else{
                    l=r;
                    r=2*r;
                }
            }
            l++;
            ll mid;
            while(l!=r){
                mid=(r-l)/2+l;
                cout<<"? "<<l<<" "<<mid<<endl;
                char val;
                cin>>val;
                if(val=='x'){
                    r=mid;
                }else{
                    l=mid+1;
                }
            }
            cout<<"! "<<l<<endl;
        }else{
            return 0;
        }
    }

    return 0;
}


#include <bits/stdc++.h>
#define ll long long
#define spd ios::sync_with_stdio(false);cin.tie(0);
using namespace std;

int main()
{
    string str;
    cin>>str;
    while(cin>>str){
        if(str.compare("start")==0){
            ll l=0,r=1;
            while(1){
                cout<<"? "<<l<<" "<<r<<endl;
                char val;
                cin>>val;
                if(val=='x'){
                    break;
                }else{
                    l=r;
                    r=2*r;
                }
            }
         //   l++;
            ll mid;
            while(l!=r){
                mid=(r-l)/2+l;
                cout<<"? "<<l<<" "<<mid<<endl;
                char val;
                cin>>val;
                if(l+1==r){
                    if(val=='x'){
                        break;
                    }else{
                        l=r;
                        break;
                    }
                }else{
                    if(val=='x'){
                    r=mid;
                }else{
                    l=mid+1;
                }
                }
            }
            cout<<"! "<<l<<endl;
        }else{
            return 0;
        }
    }

    return 0;
}


#include <bits/stdc++.h>
#define ll long long
using namespace std;
int main()
{
    string str;
    while(cin>>str){
        if(str=="start"){
            ll x=0,y=1;
            while(1){
                cout<<"? "<<x<<" "<<y<<endl;
                cin>>str;
                if(str=="x"){
                    break;
                }else{
                    x=y;
                    y=2*y;
                }
            }
            ll cns=x;
            x=x+1;
            ll mid;
            while(x<y){
                mid=(x+y)/2;
                cout<<"? "<<cns<<" "<<mid<<endl;
                cin>>str;
                    if(str=="x"){
                        y=mid;
                    }else{
                        x=mid+1;
                }
            }
            cout<<"! "<<x<<endl;
        }
    }
    return 0;
}


#include <bits/stdc++.h>
#define ll long long
using namespace std;

int main()
{
    string str;
    while(cin>>str){
        if(str=="start"){
            ll x=0,y=1;
            while(1){
                cout<<"? "<<x<<" "<<y<<endl;
                cin>>str;
                if(str=="x"){
                    break;
                }else{
                    x=y;
                    y=2*y;
                }
            }
            x=x+1;
            ll mid;
            while(x<y){
                mid=(y-x)/2+x;
                cout<<"? "<<x<<" "<<mid<<endl;
                cin>>str;
               /* if(l+1==r){
                    if(val=='x'){
                        break;
                    }else{
                        l=r;
                        break;
                    }
                }else{*/
                    if(str=="x"){
                        y=mid;
                    }else{
                        x=mid+1;
                }
                //}
            }
            cout<<"! "<<x<<endl;
        }
    }

    return 0;
}

/*
int main(){
	while(cin>>s){
		if(s=="start")
{

		for(x=0,y=1;;x=y,y=y*2){
			cout<<"? "<<x<<" "<<y<<endl;
			cin>>s;
			if(s=="x")break;
		}
		for(z=x,x=(x+y)/2;x<y;){
			cout<<"? "<<x<<" "<<y<<endl;
			cin>>s;
			if(x+1==y){cout<<"! "<<(s=="x"?y:x)<<endl;break;}
			if(s=="x")z=x,x=(x+y)/2;
			if(s=="y")y=x,x=(z+x)/2;
		}
	}
	}
	return 0;
}
*/


#include <bits/stdc++.h>
#define ll long long
using namespace std;

int main()
{
    string str;
    while(cin>>str){
        if(str=="start"){
            ll x=0,y=1;
            while(1){
                cout<<"? "<<x<<" "<<y<<endl;
                cin>>str;
                if(str=="x"){
                    break;
                }else{
                    x=y;
                    y=2*y;
                }
            }
            x=x+1;
            ll mid;
            while(x<y){
                mid=(y-x)/2+x;
                cout<<"? "<<x<<" "<<mid<<endl;
                cin>>str;
               /* if(l+1==r){
                    if(val=='x'){
                        break;
                    }else{
                        l=r;
                        break;
                    }
                }else{*/
                    if(str=="x"){
                        y=mid;
                    }else{
                        x=mid+1;
                }
                //}
            }
            cout<<"! "<<x<<endl;
        }else{
            return 0;
        }
    }

    return 0;
}
/*

int main(){
	while(cin>>s){
		if(s=="start")
{

		for(x=0,y=1;;x=y,y=y*2){
			cout<<"? "<<x<<" "<<y<<endl;
			cin>>s;
			if(s=="x")break;
		}
		for(z=x,x=(x+y)/2;x<y;){
			cout<<"? "<<x<<" "<<y<<endl;
			cin>>s;
			if(x+1==y){cout<<"! "<<(s=="x"?y:x)<<endl;break;}
			if(s=="x")z=x,x=(x+y)/2;
			if(s=="y")y=x,x=(z+x)/2;
		}
	}
	}
	return 0;
}
*/


#include <bits/stdc++.h>
#define ll long long
#define spd ios::sync_with_stdio(false);cin.tie(0);
using namespace std;

int main()
{
    while(1){
        string str;
        cin>>str;
        if(str.compare("start")==0){
            ll l=0,r=1;
            while(1){
                cout<<"? "<<l<<" "<<r<<endl;
                ll val;
                cin>>val;
                if(l==val){
                    break;
                }else{
                    l=r;
                    r=2*r;
                }
            }
            l++;
            ll mid;
            while(l!=r){
                mid=(r-l)/2+l;
                cout<<"? "<<l<<" "<<mid<<endl;
                ll val;
                cin>>val;
                if(l==val){
                    r=mid;
                }else{
                    l=mid+1;
                }
            }
            cout<<"! "<<l<<endl;
        }else{
            return 0;
        }
    }

    return 0;
}


#include <bits/stdc++.h>
#define ll long long
#define spd ios::sync_with_stdio(false);cin.tie(0);
using namespace std;

int main()
{
    while(1){
        string str;
        cin>>str;
        if(str.compare("start")==0){
            ll l=0,r=1;
            while(1){
                cout<<"? "<<l<<" "<<r<<endl;
                char val;
                cin>>val;
                if(val=='x'){
                    break;
                }else{
                    l=r;
                    r=2*r;
                }
            }
            l++;
            ll mid;
            while(l!=r){
                mid=(r-l)/2+l;
                cout<<"? "<<l<<" "<<mid<<endl;
                char val;
                cin>>val;
                if(l+1==r){
                    if(val=='x'){
                        break;
                    }else{
                        l=r;
                        break;
                    }
                }else{
                    if(val=='x'){
                    r=mid;
                }else{
                    l=mid+1;
                }
                }
            }
            cout<<"! "<<l<<endl;
        }else{
            return 0;
        }
    }

    return 0;
}


#include <bits/stdc++.h>
#define ll long long
using namespace std;
int main()
{
    string str;
    while(cin>>str){
        if(str=="start"){
            ll x=0,y=1;
            while(1){
                cout<<"? "<<x<<" "<<y<<endl;
                cin>>str;
                if(str=="x"){
                    break;
                }else{
                    x=y;
                    y=2*y;
                }
            }
            x=x+1;
            ll mid;
            while(x<y){
                mid=(x+y)/2;
                cout<<"? "<<x<<" "<<mid<<endl;
                cin>>str;
                    if(str=="x"){
                        y=mid;
                    }else{
                        x=mid+1;
                }
            }
            cout<<"! "<<x<<endl;
        }
    }
    return 0;
}


#include <bits/stdc++.h>
#define ll long long
#define spd ios::sync_with_stdio(false);cin.tie(0);
using namespace std;

int main()
{
    string str;
    while(cin>>str){
        if(str.compare("start")==0){
            ll l=0,r=1;
            while(1){
                cout<<"? "<<l<<" "<<r<<endl;
                char val;
                cin>>val;
                if(val=='x'){
                    break;
                }else{
                    l=r;
                    r=2*r;
                }
            }
         //   l++;
            ll mid;
            while(l!=r){
                mid=(r-l)/2+l;
                cout<<"? "<<l<<" "<<mid<<endl;
                char val;
                cin>>val;
                if(l+1==r){
                    if(val=='x'){
                        break;
                    }else{
                        l=r;
                        break;
                    }
                }else{
                    if(val=='x'){
                    r=mid;
                }else{
                    l=mid+1;
                }
                }
            }
            cout<<"! "<<l<<endl;
        }else{
            return 0;
        }
    }

    return 0;
}


#include <bits/stdc++.h>
#define ll long long
using namespace std;

int main()
{
    string str;
    while(cin>>str){
        if(str=="start"){
            ll x=0,y=1;
            while(1){
                cout<<"? "<<x<<" "<<y<<endl;
                cin>>str;
                if(str=="x"){
                    break;
                }else{
                    x=y;
                    y=2*y;
                }
            }
            //x=x+1;
            ll mid;
            while(x<y){
                mid=(y-x)/2+x;
                cout<<"? "<<x<<" "<<mid<<endl;
                cin>>str;
               /* if(l+1==r){
                    if(val=='x'){
                        break;
                    }else{
                        l=r;
                        break;
                    }
                }else{*/
                    if(str=="x"){
                        y=mid;
                    }else{
                        x=mid+1;
                }
                //}
            }
            cout<<"! "<<x<<endl;
        }
    }

    return 0;
}

/*int main(){
	while(cin>>s){
		if(s=="start")
{

		for(x=0,y=1;;x=y,y=y*2){
			cout<<"? "<<x<<" "<<y<<endl;
			cin>>s;
			if(s=="x")break;
		}
		for(z=x,x=(x+y)/2;x<y;){
			cout<<"? "<<x<<" "<<y<<endl;
			cin>>s;
			if(x+1==y){cout<<"! "<<(s=="x"?y:x)<<endl;break;}
			if(s=="x")z=x,x=(x+y)/2;
			if(s=="y")y=x,x=(z+x)/2;
		}
	}
	}
	return 0;
}
*/


#include <bits/stdc++.h>
#define ll long long
using namespace std;

int main()
{
    string str;
    while(cin>>str){
        if(str=="start"){
            ll x=0,y=1;
            while(1){
                cout<<"? "<<x<<" "<<y<<endl;
                cin>>str;
                if(str=="x"){
                    break;
                }else{
                    x=y;
                    y=2*y;
                }
            }
            x=x+1;
            ll mid;
            while(x<y){
                mid=(y-x)/2+x;
                cout<<"? "<<x<<" "<<mid<<endl;
                cin>>str;
               /* if(l+1==r){
                    if(val=='x'){
                        break;
                    }else{
                        l=r;
                        break;
                    }
                }else{*/
                    if(str=="x"){
                        y=mid;
                    }else{
                        x=mid+1;
                }
                //}
            }
            cout<<"! "<<x<<endl;
            break;
        }
    }

    return 0;
}/*

int main(){
	while(cin>>s){
		if(s=="start")
{

		for(x=0,y=1;;x=y,y=y*2){
			cout<<"? "<<x<<" "<<y<<endl;
			cin>>s;
			if(s=="x")break;
		}
		for(z=x,x=(x+y)/2;x<y;){
			cout<<"? "<<x<<" "<<y<<endl;
			cin>>s;
			if(x+1==y){cout<<"! "<<(s=="x"?y:x)<<endl;break;}
			if(s=="x")z=x,x=(x+y)/2;
			if(s=="y")y=x,x=(z+x)/2;
		}
	}
	}
	return 0;
}
*/


#include<bits/stdc++.h>
#include<time.h>
#include<stdlib.h>
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#pragma GCC target("sse4")
#define pb push_back
#define mp make_pair
#define IOS ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define ll long long
#define pll pair<ll,ll>
#define vll vector<ll,ll>
#define all(a) (a).begin(),(a).end()
#define ff first
#define ss second
#define sz(x) (ll)x.size()
#define hell 1000000007
#define repf(i,a,b) for(ll i=a;i<b;i++)
#define repb(i,a,b) for(ll i=a;i>b;i--)
#define lbnd lower_bound
#define ubnd upper_bound
#define bs binary_search
#define gcd(a,b) __gcd((a),(b))
#define EPS 1e-12
#define lcm(a,b) ((a)*(b))/__gcd((a),(b))
#define sqrt sqrtl
#define cbrt cbrtl
using namespace std;

int main()
{
	IOS
	string s;
	cin>>s;
	while(s!="end")
	{
		char ch;
		ll x=0,y=1,p=1;
		cout<<"? "<<x<<" "<<y<<endl;
		cin>>ch;
		if(ch=='x')
			cout<<"! 1"<<endl;
		else
		{
			ll done=0;
			ll cnt=1;
			x=1;y=2;ll l,r;
			while(cnt<=60)
			{
				cout<<"? "<<x<<" "<<y<<endl;
				cin>>ch;
				if(ch=='x')
				{
					if(y-x==1)
					{
						cout<<"! "<<y<<endl;
						break;
					}
					else
					{
						if(!done)
						{
							l=x;r=y;
							done=1;
							y=(x+y)/2;
						}
						else
						{
						  r=y;
						  y=(x+y)/2;
						}
					}
				}
				else
				{
					if(!done)
					{
						x=x*2;
						y=y*2;
					}
					else
					{
						x=y;
						y=(x+r)/2;
						if(y==x)
							y++;
					}
				}
			}
			if(cnt>60)
				cout<<"! -1"<<endl;
		}
		cin>>s;
	}
	return 0;
}


#include<bits/stdc++.h>
#include<time.h>
#include<stdlib.h>
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#pragma GCC target("sse4")
#define pb push_back
#define mp make_pair
#define IOS ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define ll long long
#define pll pair<ll,ll>
#define vll vector<ll,ll>
#define all(a) (a).begin(),(a).end()
#define ff first
#define ss second
#define sz(x) (ll)x.size()
#define hell 1000000007
#define repf(i,a,b) for(ll i=a;i<b;i++)
#define repb(i,a,b) for(ll i=a;i>b;i--)
#define lbnd lower_bound
#define ubnd upper_bound
#define bs binary_search
#define gcd(a,b) __gcd((a),(b))
#define EPS 1e-12
#define lcm(a,b) ((a)*(b))/__gcd((a),(b))
#define sqrt sqrtl
#define cbrt cbrtl
using namespace std;

int main()
{
	IOS
	string s;
	cin>>s;
	while(s!="end")
	{
		char ch;
		ll x=0,y=1,p=1;
		cout<<"? "<<x<<" "<<y<<endl;
		cin>>ch;
		if(ch=='x')
			cout<<"! 1"<<endl;
		else
		{
			ll done=0;
			ll cnt=1;
			x=1;y=2;ll l,r;
			while(cnt<60)
			{
				cout<<"? "<<x<<" "<<y<<endl;
				cin>>ch;
				if(!done)
				{
					if(ch=='y')
					{
						x=x*2;y=y*2;
					}
					else
					{
						done=1;
						l=x;r=y;
						y=(l+r+1)/2;
					}
				}
				else
				{
					if(ch=='x')
					{
						r=y;
						y=(l+r+1)/2;
					}
					else
					{
						l=y;
						x=y;
						y=(l+r+1)/2;
					}
				}
				if(r-l==1 && done)
				{
					cout<<"! "<<r<<endl;
					break;
				}
			}
		}
		cin>>s;
	}
	return 0;
}


#include<bits/stdc++.h>
#include<time.h>
#include<stdlib.h>
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#pragma GCC target("sse4")
#define pb push_back
#define mp make_pair
#define IOS ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define ll long long
#define pll pair<ll,ll>
#define vll vector<ll,ll>
#define all(a) (a).begin(),(a).end()
#define ff first
#define ss second
#define sz(x) (ll)x.size()
#define hell 1000000007
#define repf(i,a,b) for(ll i=a;i<b;i++)
#define repb(i,a,b) for(ll i=a;i>b;i--)
#define lbnd lower_bound
#define ubnd upper_bound
#define bs binary_search
#define gcd(a,b) __gcd((a),(b))
#define EPS 1e-12
#define lcm(a,b) ((a)*(b))/__gcd((a),(b))
#define sqrt sqrtl
#define cbrt cbrtl
using namespace std;

int main()
{
	IOS
	string s;
	cin>>s;
	while(s!="end")
	{
		char ch;
		ll x=0,y=1,p=1;
		cout<<"? "<<x<<" "<<y<<endl;
		cin>>ch;
		if(ch=='x')
			cout<<"! 1"<<endl;
		else
		{
			ll cnt=1;
			while(cnt<=60)
			{
				if(ch=='x')
				{
					if(y-x==1)
					{
						cout<<"! "<<y<<endl;
						break;
					}
					else
						y=(x+y)/2;
				}
				else
				{
					x=x*2;y=y*2;
				}
				cout<<"? "<<x<<" "<<y<<endl;
				cin>>ch;
				cnt++;
			}
			if(cnt>60)
				cout<<"! -1"<<endl;
		}
		cin>>s;
	}
	return 0;
}


n=input()
a=2
for i in range(1,n+1):
    x=i*(i+1)
    print (pow(x,2)-a)/i
    a=x


import sys
from collections import Counter
#sys.stdin = open('input.txt', 'r')
#sys.stdout = open('output.txt','w')

N = int(raw_input().strip())
m,l = 2,1
while l != N+1 :
    print (((l+1)*l)**2-m) / l
    m,l = l*(l+1),l+1


import sys
from collections import Counter
#sys.stdin = open('input.txt', 'r')
#sys.stdout = open('output.txt','w')

N = int(raw_input().strip())
m,l = 2,1
while l != N+1 :
    r = l+1
    flag = True
    for i in xrange(1,100000) :
        if ((r*i)**2-m) % l == 0 :
            print ((r*i)**2-m) / l
            m,l = r*i,r
            flag = False
            break
    if flag == True :
        print 'Oops'


n = int(raw_input())

cur = 2
lv = 1

while lv <= n:
    next = lv * (lv + 1)
    print (pow(next, 2) - cur) / lv
    cur = next
    lv += 1


n = input()
print 2
for i in xrange(2, n + 1):
    print i * (i + 1) * (i + 1) - i + 1


import math
n = int(input())
for i in range(n):
    if i == 0:
        print(2)
    else:
        cur = (i + 1) * (i + 2) * (i + 2) - i;
        print(cur)


n = int(input())
for i in range(n):
    if i == 0:
        print(2)
    else:
        print((i + 1) * (i + 1) * (i + 2) * (i + 2))


import math
n = int(input())
for i in range(n):
    if i == 0:
        print(2)
        prv = 2
    else:
        cur = (i + 1) * (i + 1) * (i + 2) * (i + 2) - prv
        print(cur)
        prv = int(math.sqrt(cur + prv))


n = int(input())
for i in range(n):
    if i == 0:
        print(2)
        prv = 2
    else:
        cur = (i + 1) * (i + 1) * (i + 2) * (i + 2) - prv
        print(cur)
        prv += cur


import math
n = int(input())
for i in range(n):
    if i == 0:
        print(2)
        prv = 2
    else:
        cur = (i + 1) * (i + 1) * (i + 2) * (i + 2) - prv
        print(cur)
        prv += math.sqrt(cur)


n = int(input())
for i in range(n):
    if i == 0:
        print(2)
        prv = 2
    else:
        cur = (i + 1) * (i + 1) * (i + 2) * (i + 2) - prv
        print(cur)
        prv = cur


import math
n = int(input())
for i in range(n):
    if i == 0:
        print(2)
        prv = 2
    else:
        cur = (i + 1) * (i + 1) * (i + 2) * (i + 2) - prv
        print(cur)
        prv += int(math.sqrt(cur))


import math
n = int(input())
for i in range(n):
    if i == 0:
        print(2)
    else:
        cur = (i + 1) * (i + 2) * (i + 2) - i + 1;
        print(cur)


import math
n = int(input())
for i in range(n):
    if i == 0:
        print(2)
        prv = 2
    else:
        cur = (i + 1) * (i + 1) * (i + 2) * (i + 2) - prv
        print(cur)
        prv = int(math.sqrt(cur))


n=int(input())

prev=1
next=2
cur=2

for i in range(n):
    out=((prev*prev*next*next)-cur)//(i+1)
    print(out)
    cur=prev*next
    prev+=1
    next+=1


x, a = 2, []
for i in range(1, int(input()) + 1):
    y = i * (i + 1)
    a.append((y ** 2 - x) // i)
    x = y
print('\n'.join(map(str, a)))


from sys import stdout
n = int(input())
stdout.write("2\n")
for lv in range(2, n + 1):
    stdout.write(str(lv*(lv+1)*(lv+1)-(lv-1)) + '\n')


n = int(input())
print(2)
for i in range(2,n+1):
    print(1 + i ** 2 * (i + 2))


n = int( input() )
print( 2 )
for i in range(2, n+1):
  print( ( i + 1 ) * ( i + 1 ) * i - ( i - 1 ) )


n = int(input())
print(2)
for i in range(2, n+1):
    print(i ** 3 + 2 * i ** 2 + 1)


import sys
from math import *
from fractions import gcd
readints=lambda:map(int, input().strip('\n').split())

n=int(input())
prev=1
for i in range(1,n+1):
    nxt = (i*(i+1))**2
    cur = (nxt-prev)//i
    print(cur)
    prev=int(sqrt(nxt))


import sys
from math import *
from fractions import gcd
readints=lambda:map(int, input().strip('\n').split())

n=int(input())
prev=2
for i in range(1,n+1):
    nxt = (i*(i+1))**2
    cur = (nxt-prev)//i
    print(cur)
    prev=int(sqrt(nxt))


from math import sqrt, floor, ceil

n = int(input())
val = 2
ar = [0] * n
for i in range(1, n + 1):
	num = (ceil(val / (i + 1)) * (i + 1)) ** 2 - val
	val = (ceil(val / (i + 1)) * (i + 1))
	print(num)


from math import sqrt, floor, ceil

n = int(input())
val = 1
ar = [0] * n
for i in range(1, n + 1):
	num = (ceil(val / (i + 1)) * (i + 1)) ** 2 - val
	val = (ceil(val / (i + 1)) * (i + 1))
	print(num)


from math import sqrt, floor, ceil

# 3
# 2
# 17
# 46
n = int(input())
val = 2
ar = [0] * n
for i in range(1, n + 1):
	num = (ceil(val / ((i + 1) * i)) * ((i + 1) * i)) ** 2 - val
	val = (ceil(val / ((i + 1) * i) * ((i + 1) * i)))
	print(num // i)


from math import sqrt, floor, ceil

# 3
# 2
# 17
# 46
n = int(input())
val = 2
ar = [0] * n
for i in range(1, n + 1):
	num = (ceil(val / ((i + 1) * i))) * ((i + 1) * i) ** 2 - val
	val = ceil(val / ((i + 1) * i)) * ((i + 1) * i)
	print(num // i)


n=int(input())
p=1
ost=2
for i in range(n) :
    v=(p*(p+1))**2
    print(v//p-ost//p)
    ost=p*(p+1)
    p+=1


n = int(input())
st = 2
def sqrt(x):
    lo = 0
    hi = x
    while (lo < hi):
        mid = (lo + hi) // 2
        if mid*mid < x:
            lo = mid + 1
        else:
            hi = mid
    return lo

for i in range(1, n+1):
    a = ((i*(i+1))**2-st)/i
    a = int(a)
    print(a)
    st += i*a
    st = sqrt(st)


n = int(input())
st = 2
def sqrt(x):
    lo = 0
    hi = 1000000000000
    while (lo < hi):
        mid = (lo + hi) // 2
        if mid*mid < x:
            lo = mid + 1
        else:
            hi = mid
    return lo

for i in range(1, n+1):
    a = ((i*(i+1))**2-st)/i
    a = int(a)
    if a != (i+1)**2*(i)-(i-1):
        print(a)
        print(st+i*a)
        print(a)
    st += i*a
    st = sqrt(st)


n = int(input())
st = 2
def sqrt(x):
    lo = 0
    hi = 1000000000000
    while (lo < hi):
        mid = (lo + hi) // 2
        if mid*mid < x:
            lo = mid + 1
        else:
            hi = mid
    return lo

for i in range(1, n+1):
    a = ((i*(i+1))**2-st)/i
    a = int(a)

    st += i*a
    st = sqrt(st)


n = int(input())
st = 2
def sqrt(x):
    lo = 0
    hi = x
    while (lo < hi):
        mid = (lo + hi) // 2
        if mid*mid < x:
            lo = mid + 1
        else:
            hi = mid
    return lo

for i in range(1, n+1):
    a = ((i*(i+1))**2-st)/i
    a = int(a)
    if a != (i+1)**2*(i)-(i-1):
        print(a)
        print(st+i*a)
        print(a)
    st += i*a
    st = sqrt(st)


n = int(input())
st = 2
def sqrt(x):
    lo = 0
    hi = 1000000000
    while (lo < hi):
        mid = (lo + hi) // 2
        if mid*mid < x:
            lo = mid + 1
        else:
            hi = mid
    return lo

for i in range(1, n+1):
    a = ((i*(i+1))**2-st)/i
    a = int(a)
    print(a)
    st += i*a
    st = sqrt(st)


n = int(input())
end = 100000000

x = []
for i in range(n, 0, -1):
    sub = (end - i + 1) // i
    if i==1:
        x.append(sub-2)
    else:
        x.append(sub)
    end -= sub * i;
    end *= end

x.reverse()
for i in x:
    print(i)


n = int(input())
end = 100000000

x = []
for i in range(n, 0, -1):
    sub = (end - i + 1) // i
    if i==1:
        x.append(sub-2)
    else:
        x.append(sub)
    end -= sub * i;
    end *= end

x.reverse()


n = int(input())
st = 2
for i in range(1, n+1):
    a = ((i*(i+1))**2-st)/i
    a = int(a)
    print(a)
    st += i*a
    st = st**0.5


n = int(input())
print(2)
for i in range(1, n):
    print((i+2)*(i+2)*(i+1)-i)


n = int(input())
st = 2
def sqrt(x):
    lo = 0
    hi = 1000000000000
    while (lo < hi):
        mid = (lo + hi) // 2
        if mid*mid < x:
            lo = mid + 1
        else:
            hi = mid
    return lo

for i in range(1, n+1):
    a = ((i*(i+1))**2-st)/i
    a = int(a)
    print(a)
    st += i*a
    st = sqrt(st)


"""
Author    : co_devil Chirag Garg
Institute : JIIT
"""

from __future__ import division, print_function
import itertools, os, sys, threading
from collections import deque, Counter, OrderedDict, defaultdict
import heapq
from math import ceil,floor,log,sqrt,factorial,pow,pi,gcd
# from bisect import bisect_left,bisect_right
# from decimal import *,threading
"""from io import BytesIO, IOBase
if sys.version_info[0] < 3:
    from __builtin__ import xrange as range
    from future_builtins import ascii, filter, hex, map, oct, zip
else:
    from builtins import str as __str__
    str = lambda x=b'': x if type(x) is bytes else __str__(x).encode()
BUFSIZE = 8192
class FastIO(IOBase):
    newlines = 0
    def __init__(self, file):
        self._buffer = BytesIO()
        self._fd = file.fileno()
        self._writable = 'x' in file.mode or 'r' not in file.mode
        self.write = self._buffer.write if self._writable else None

    def read(self):
        return self._buffer.read() if self._buffer.tell() else os.read(self._fd, os.fstat(self._fd).st_size)

    def readline(self):
        while self.newlines == 0:
            b, ptr = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE)), self._buffer.tell()
            self._buffer.seek(0, 2), self._buffer.write(b), self._buffer.seek(ptr)
            self.newlines += b.count(b'\n') + (not b)
        self.newlines -= 1
        return self._buffer.readline()

    def flush(self):
        if self._writable:
            os.write(self._fd, self._buffer.getvalue())
            self._buffer.truncate(0), self._buffer.seek(0)
sys.stdin, sys.stdout = FastIO(sys.stdin), FastIO(sys.stdout)
input = lambda: sys.stdin.readline().rstrip(b'\r\n')

def print(*args, **kwargs):
    sep, file = kwargs.pop('sep', b' '), kwargs.pop('file', sys.stdout)
    at_start = True
    for x in args:
        if not at_start:
            file.write(sep)
        file.write(str(x))
        at_start = False
    file.write(kwargs.pop('end', b'\n'))
    if kwargs.pop('flush', False):
        file.flush()

"""

def ii(): return int(input())
def si(): return str(input())
def mi(): return map(int,input().split())
def li(): return list(mi())

abc = 'abcdefghijklmnopqrstuvwxyz'
abd = {'a': 0, 'b': 1, 'c': 2, 'd': 3, 'e': 4, 'f': 5, 'g': 6, 'h': 7, 'i': 8, 'j': 9, 'k': 10, 'l': 11, 'm': 12,
       'n': 13, 'o': 14, 'p': 15, 'q': 16, 'r': 17, 's': 18, 't': 19, 'u': 20, 'v': 21, 'w': 22, 'x': 23, 'y': 24,
       'z': 25}
mod = 1000000007
dx, dy = [-1, 1, 0, 0], [0, 0, 1, -1]
def getKey(item): return item[0]
def sort2(l): return sorted(l, key=getKey)
def d2(n, m, num): return [[num for x in range(m)] for y in range(n)]
def isPowerOfTwo(x): return (x and (not (x & (x - 1))))
def decimalToBinary(n): return bin(n).replace("0b", "")
def ntl(n): return [int(i) for i in str(n)]
def powerMod(x, y, p):
    res = 1
    x %= p
    while y > 0:
        if y & 1:
            res = (res * x) % p
        y = y >> 1
        x = (x * x) % p
    return res
def gcd(x, y):
    while y:
        x, y = y, x % y
    return x
# For getting input from input.txt file
# sys.stdin = open('input.txt', 'r')

# Printing the Output to output.txt file
# sys.stdout = open('output.txt', 'w')

graph = defaultdict(list)
visited = [0] * 1000000
col = [-1] * 1000000
def dfs(v, c):
    if visited[v]:
        if col[v] != c:
            print('-1')
            exit()
        return
    col[v] = c
    visited[v] = 1
    for i in graph[v]:
        dfs(i, c ^ 1)

def bfs(d,v):
    q=[]
    q.append(v)
    visited[v]=1
    while len(q)!=0:
        x=q[0]
        q.pop(0)
        for i in d[x]:
            if visited[i]!=1:
                visited[i]=1
                q.append(i)
        print(x)
    print(l)

def make_graph(e):
    d={}
    for i in range(e):
        x,y=mi()
        if x not in d.keys():
            d[x]=[y]
        else:
            d[x].append(y)
        if y not in d.keys():
            d[y] = [x]
        else:
            d[y].append(x)
    return d
def gr2(n):
    d={}
    for i in range(n):
        x,y=mi()
        if x not in d.keys():
            d[x]=[y]
        else:
            d[x].append(y)
    return d

def connected_components(graph):
    seen = set()
    def dfs(v):
        vs = set([v])
        component=[]
        while vs:
            v = vs.pop()
            seen.add(v)
            vs |= set(graph[v]) - seen
            component.append(v)
        return component
    ans=[]
    for v in graph:
        if v not in seen:
            d=dfs(v)
            ans.append(d)
    return ans

n=ii()
print(2)
for i in range(2,n+1):
    print(int(i*pow(i+1,2)-(i-1)))


n = int(input())
start = 2
for i in range(1, n + 1):
    tmp = ((i + 1) * i) ** 2
    tmp -= start
    start = i * (i + 1)
    print(tmp // i)


using System;
using System.Linq;
using System.Linq.Expressions;
using System.Collections.Generic;
using Debug = System.Diagnostics.Debug;
using StringBuilder = System.Text.StringBuilder;
using System.Numerics;
using Number = System.Int64;
namespace Program
{
    public class Solver
    {
        public void Solve()
        {
            var n = sc.Integer();
            long x = 2;
            for (int i = 1; i <= n; i++)
            {
                BigInteger next = i + 1;
                next *= i + 1;
                next *= i;
                next *= i;
                var need = (next - x);
                //Debug.WriteLine(next);
                IO.Printer.Out.WriteLine(need / i);
                x = (i + 1);
                x *= i;
            }
        }

        public IO.StreamScanner sc = new IO.StreamScanner(Console.OpenStandardInput());
        static T[] Enumerate<T>(int n, Func<int, T> f) { var a = new T[n]; for (int i = 0; i < n; ++i) a[i] = f(i); return a; }
        static public void Swap<T>(ref T a, ref T b) { var tmp = a; a = b; b = tmp; }
    }
}
#region main
static class Ex
{
    static public string AsString(this IEnumerable<char> ie) { return new string(System.Linq.Enumerable.ToArray(ie)); }
    static public string AsJoinedString<T>(this IEnumerable<T> ie, string st = " ") { return string.Join(st, ie); }
    static public void Main()
    {
        var solver = new Program.Solver();
        solver.Solve();
        Program.IO.Printer.Out.Flush();
    }
}
#endregion
#region Ex
namespace Program.IO
{
    using System.IO;
    using System.Text;
    using System.Globalization;
    public class Printer: StreamWriter
    {
        static Printer() { Out = new Printer(Console.OpenStandardOutput()) { AutoFlush = false }; }
        public static Printer Out { get; set; }
        public override IFormatProvider FormatProvider { get { return CultureInfo.InvariantCulture; } }
        public Printer(System.IO.Stream stream) : base(stream, new UTF8Encoding(false, true)) { }
        public Printer(System.IO.Stream stream, Encoding encoding) : base(stream, encoding) { }
        public void Write<T>(string format, T[] source) { base.Write(format, source.OfType<object>().ToArray()); }
        public void WriteLine<T>(string format, T[] source) { base.WriteLine(format, source.OfType<object>().ToArray()); }
    }
    public class StreamScanner
    {
        public StreamScanner(Stream stream) { str = stream; }
        public readonly Stream str;
        private readonly byte[] buf = new byte[1024];
        private int len, ptr;
        public bool isEof = false;
        public bool IsEndOfStream { get { return isEof; } }
        private byte read()
        {
            if (isEof) return 0;
            if (ptr >= len) { ptr = 0; if ((len = str.Read(buf, 0, 1024)) <= 0) { isEof = true; return 0; } }
            return buf[ptr++];
        }
        public char Char() { byte b = 0; do b = read(); while ((b < 33 || 126 < b) && !isEof); return (char)b; }

        public string Scan()
        {
            var sb = new StringBuilder();
            for (var b = Char(); b >= 33 && b <= 126; b = (char)read())
                sb.Append(b);
            return sb.ToString();
        }
        public string ScanLine()
        {
            var sb = new StringBuilder();
            for (var b = Char(); b != '\n'; b = (char)read())
                if (b == 0) break;
                else if (b != '\r') sb.Append(b);
            return sb.ToString();
        }
        public long Long()
        {
            if (isEof) return long.MinValue;
            long ret = 0; byte b = 0; var ng = false;
            do b = read();
            while (b != 0 && b != '-' && (b < '0' || '9' < b));
            if (b == 0) return long.MinValue;
            if (b == '-') { ng = true; b = read(); }
            for (; true; b = read())
            {
                if (b < '0' || '9' < b)
                    return ng ? -ret : ret;
                else ret = ret * 10 + b - '0';
            }
        }
        public int Integer() { return (isEof) ? int.MinValue : (int)Long(); }
        public double Double() { var s = Scan(); return s != "" ? double.Parse(s, CultureInfo.InvariantCulture) : double.NaN; }
        private T[] enumerate<T>(int n, Func<T> f)
        {
            var a = new T[n];
            for (int i = 0; i < n; ++i) a[i] = f();
            return a;
        }

        public char[] Char(int n) { return enumerate(n, Char); }
        public string[] Scan(int n) { return enumerate(n, Scan); }
        public double[] Double(int n) { return enumerate(n, Double); }
        public int[] Integer(int n) { return enumerate(n, Integer); }
        public long[] Long(int n) { return enumerate(n, Long); }
    }
}
#endregion


using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ContestRuns
{
    class Program
    {
#if DEBUG
        static readonly TextReader input = File.OpenText(@"../../A/A.in");
        static readonly TextWriter output = File.CreateText(@"../../A/A.out");
#else
        static readonly TextReader input = Console.In;
        static readonly TextWriter output = Console.Out;
#endif
        private static void SolveA()
        {
            var n = long.Parse(input.ReadLine());
            //var res = input.ReadLine().Split(new char[] { ' ' }).Select(int.Parse).ToArray();

            long cur = 2;
            for (long k = 1; k <= n; ++k)
            {
                long target = k*(k + 1)*(k + 1) - cur/k;
                cur = k * (k + 1);
                output.WriteLine(target);
            }
        }

        static void Main(string[] args)
        {
            SolveA();
            output.Flush();
        }
    }
}


namespace Script
{
    using System;
    using System.Collections.Generic;
    using System.Linq;

    class Program
    {
        static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine()) + 1;

            var primes = new List<int>();
            for (int i = 2; i <= n; i++)
            {
                bool isPrime = true;

                foreach (var p in primes)
                {
                    if (p * p > i)
                    {
                        break;
                    }

                    if (i % p == 0)
                    {
                        isPrime = false;
                    }
                }

                if (isPrime)
                {
                    primes.Add(i);
                }
            }

            long[] z = new long[n];

            long number = 2;
            for (int i = 1; i < n; i++)
            {
                long x = number / i;

                long l = i;
                z[i] = 1;
                foreach (var p in primes)
                {
                    if (l == 1)
                    {
                        break;
                    }

                    if (l % p == 0)
                    {
                        if ((l / p) % p == 0)
                        {
                            z[i] = z[i / p] * p;
                            break;
                        }
                        else
                        {
                            z[i] *= p;
                            l /= p;
                        }
                    }
                }

                number = (i + 1) * z[i];
                long y = (number * number) / i - x;

                Console.WriteLine(y);
            }
        }
    }
}


namespace Script
{
    using System;
    using System.Collections.Generic;
    using System.Linq;

    class Program
    {
        static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine()) + 1;

            var primes = new List<int>();
            for (int i = 2; i <= n; i++)
            {
                bool isPrime = true;

                foreach (var p in primes)
                {
                    if (p * p > i)
                    {
                        break;
                    }

                    if (i % p == 0)
                    {
                        isPrime = false;
                    }
                }

                if (isPrime)
                {
                    primes.Add(i);
                }
            }

            long[] z = new long[n];

            long number = 2;
            for (int i = 1; i < n; i++)
            {
                long x = number / i;

                long l = i;
                z[i] = 1;
                foreach (var p in primes)
                {
                    if (l == 1)
                    {
                        break;
                    }

                    if (l % p == 0)
                    {
                        if ((l / p) % p == 0)
                        {
                            z[i] = z[i / (p * p)] * p;
                            break;
                        }
                        else
                        {
                            z[i] *= p;
                            l /= p;
                        }
                    }
                }

                number = (i + 1) * z[i];
                long y = ((z[i] * z[i]) / i) * (i + 1) * (i + 1) - x;

                Console.WriteLine(y);
            }
        }
    }
}


namespace Script
{
    using System;
    using System.Collections.Generic;
    using System.Linq;

    class Program
    {
        static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine()) + 1;

            var primes = new List<int>();
            for (int i = 2; i <= n; i++)
            {
                bool isPrime = true;

                foreach (var p in primes)
                {
                    if (p * p > i)
                    {
                        break;
                    }

                    if (i % p == 0)
                    {
                        isPrime = false;
                    }
                }

                if (isPrime)
                {
                    primes.Add(i);
                }
            }

            long[] z = new long[n];

            long number = 2;
            for (int i = 1; i < n; i++)
            {
                long x = number / i;

                long l = i;
                z[i] = 1;
                foreach (var p in primes)
                {
                    if (l == 1)
                    {
                        break;
                    }

                    if (l % p == 0)
                    {
                        if ((l / p) % p == 0)
                        {
                            z[i] = z[i / (p * p)] * p;
                            break;
                        }
                        else
                        {
                            z[i] *= p;
                            l /= p;
                        }
                    }
                }

                number = (i + 1) * z[i];
                long y = (number * number) / i - x;

                Console.WriteLine(y);
            }
        }
    }
}


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Плюс_и_квадратный_корень
{
    class Program
    {
        static void Main(string[] args)
        {
            int count = 0;
            double kor;
            double number = 2;
            long rezult;

            int n = int.Parse( Console.ReadLine());

            for (int i = 1; i < n + 1; i++)
            {
                if (i == 1) Console.WriteLine(2);
                else{
                    rezult=i * (i + 1)*(i + 1)-(i-1);
                    Console.WriteLine(rezult);
                }
            }

            /*
            for (int i = 1; i < n+1;i++ )
            {

                while (true)
                {
                    kor = Math.Sqrt(number);
                    if ((kor % 1 == 0) && (kor % (i + 1) == 0)) break;
                    count++;
                    number += i;
                }
                Console.WriteLine(count);
                count = 0;
                number = kor;
            }
             */

            Console.ReadLine();
        }
    }
}


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Плюс_и_квадратный_корень
{
    class Program
    {
        static void Main(string[] args)
        {
            int count = 0;
            double kor;
            double number = 2;
            long rezult;

            int n = int.Parse( Console.ReadLine());

            for (int i = 1; i < n + 1; i++)
            {
                if (i == 1) Console.WriteLine(2);
                else{
                    rezult=(long)i * (long)(i + 1)* (long)(i + 1)-(long)(i-1);
                    Console.WriteLine(rezult);
                }
            }

            /*
            for (int i = 1; i < n+1;i++ )
            {

                while (true)
                {
                    kor = Math.Sqrt(number);
                    if ((kor % 1 == 0) && (kor % (i + 1) == 0)) break;
                    count++;
                    number += i;
                }
                Console.WriteLine(count);
                count = 0;
                number = kor;
            }
             */

            Console.ReadLine();
        }
    }
}


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Плюс_и_квадратный_корень
{
    class Program
    {
        static void Main(string[] args)
        {
            double number = 2;
            int n = int.Parse( Console.ReadLine());
            long count=0;
            for (int i = 1; i < n+1;i++ )
            {
                while (true)
                {
                    if ((Math.Sqrt(number) % 1 == 0) && (Math.Sqrt(number) % (i + 1) == 0)) break;
                    count++;
                    number += i;
                }
                Console.WriteLine(count);
                count = 0;
                number = Math.Sqrt(number);
            }

            Console.ReadLine();
        }
    }
}


using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;

namespace codeforces
{
	class Program
	{
		public const int Osn = 1000000007;

		public class Pair
		{
			public long First;

			public long Second;
		}

		public class PairComparer : IComparer<Pair>
		{
			public int Compare(Pair x, Pair y)
			{
				if (x.First > y.First || (x.First == y.First && x.Second > y.Second))
					return -1;
				return 1;
			}
		}

		public static long GetGcd(long a, long b)
		{
			while (true)
			{
				if (b == 0)
					return a;
				var a1 = a;
				a = b;
				b = a1 % b;
			}
		}

		public static void WriteYesNo(bool x, string yes = "YES", string no = "NO")
		{
			if (x)
				Console.WriteLine(yes);
			else
			{
				Console.WriteLine(no);
			}
		}

		public static string ReadString()
		{
			return Console.ReadLine();
		}

		public static List<int> ReadListOfInts()
		{
			var s = Console.ReadLine();
			return s.Split(' ').Select(int.Parse).ToList();
		}

		public static List<long> ReadListOfLongs()
		{
			var s = Console.ReadLine();
			return s.Split(' ').Select(long.Parse).ToList();
		}

		public static int ReadInt()
		{
			var s = Console.ReadLine();
			return int.Parse(s);
		}

		public static long ReadLong()
		{
			var s = Console.ReadLine();
			return long.Parse(s);
		}

		public class Vertex
		{
			public int Was;

			public List<int> Edges;
		}

		public static List<Vertex> Graph = new List<Vertex>();

		public static bool Dfs(int u)
		{
			if (Graph[u].Was == 1) return true;
			if (Graph[u].Was == 2) return false;
			Graph[u].Was = 1;
			foreach (var t in Graph[u].Edges)
			{
				if (Dfs(t)) return true;
			}

			Graph[u].Was = 2;
			return false;
		}

		public static bool IsPrime(int x)
		{
			for (var j = 2; j * j <= x; ++j)
				if (x % j == 0)
					return false;
			return true;
		}

		public class LinkedVertex
		{
			public int Next;

			public int Prev;

			public int Value;
		}

		public static int BinarySearch(List<int> list, int value)
		{
			var l = -1;
			var r = list.Count;
			while (r - l > 1)
			{
				var m = (r + l) / 2;
				if (list[m] >= value)
					r = m;
				else
					l = m;
			}

			return r;
		}

		private static void Main()
		{
			var n = ReadInt();
			for (var i = 1; i <= n; ++i)
			{
				if (i == 1)
					Console.WriteLine(2);
				else
				{
					Console.WriteLine((long)i * (i + 1) * (i + 1) - i + 1);
				}
			}
			Console.ReadLine();
		}
	}
}


using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Globalization;

class Program
{
    static void Main(string[] args)
    {
        int n = RI();
        Console.WriteLine(2);
        for (int i = 2; i <= n; i++)
        {
            long v = i * i * i + 2 * i * i + 1;
            Console.WriteLine(v);
        }
    }

    private const int Mod = 1000000000 + 7;

    #region Data Read
    private static char ReadSign()
    {
        while (true)
        {
            int ans = consoleReader.Read();
            if (ans == '+' || ans == '-' || ans == '?')
                return (char)ans;
        }
    }

    private static long GCD(long a, long b)
    {
        if (a % b == 0) return b;
        return GCD(b, a % b);
    }

    private static List<int>[] ReadGraph(int n, int m)
    {
        List<int>[] g = new List<int>[n];
        for (int i = 0; i < n; i++) g[i] = new List<int>();
        for (int i = 0; i < m; i++)
        {
            int a = RI();
            int b = RI();

            g[a].Add(b);
            g[b].Add(a);
        }

        return g;
    }

    private static int[,] ReadGraphAsMatrix(int n, int m)
    {
        int[,] matrix = new int[n + 1, n + 1];
        for (int i = 0; i < m; i++)
        {
            int a = RI();
            int b = RI();
            matrix[a, b] = matrix[b, a] = 1;
        }

        return matrix;
    }

    private static void Sort(ref int a, ref int b)
    {
        if (a > b) Swap(ref a, ref b);
    }

    private static void Swap(ref int a, ref int b)
    {
        int tmp = a;
        a = b;
        b = tmp;
    }

    private const int BufferSize = 1 << 16;
    private static StreamReader consoleReader;
    private static MemoryStream testData;

    private static int RI()
    {
        int ans = 0;
        int mul = 1;
        do
        {
            ans = consoleReader.Read();
            if (ans == -1)
                return 0;
            if (ans == '-') mul = -1;
        } while (ans < '0' || ans > '9');

        ans -= '0';
        while (true)
        {
            int chr = consoleReader.Read();
            if (chr < '0' || chr > '9')
                return ans * mul;
            ans = ans * 10 + chr - '0';
        }
    }

    private static ulong RUL()
    {
        ulong ans = 0;
        int chr;
        do
        {
            chr = consoleReader.Read();
            if (chr == -1)
                return 0;
        } while (chr < '0' || chr > '9');

        ans = (uint)(chr - '0');
        while (true)
        {
            chr = consoleReader.Read();
            if (chr < '0' || chr > '9')
                return ans;
            ans = ans * 10 + (uint)(chr - '0');
        }
    }

    private static long RL()
    {
        long ans = 0;
        int mul = 1;
        do
        {
            ans = consoleReader.Read();
            if (ans == -1)
                return 0;
            if (ans == '-') mul = -1;
        } while (ans < '0' || ans > '9');

        ans -= '0';
        while (true)
        {
            int chr = consoleReader.Read();
            if (chr < '0' || chr > '9')
                return ans * mul;
            ans = ans * 10 + chr - '0';
        }
    }

    private static int[] RIA(int n)
    {
        int[] ans = new int[n];
        for (int i = 0; i < n; i++)
            ans[i] = RI();
        return ans;
    }

    private static long[] RLA(int n)
    {
        long[] ans = new long[n];
        for (int i = 0; i < n; i++)
            ans[i] = RL();
        return ans;
    }

    private static char[] ReadString()
    {
        int ans;

        do
        {
            ans = consoleReader.Read();
        } while (!((ans >= 'a' && ans <= 'z') || (ans >= 'A' && ans <= 'Z')));

        List<char> s = new List<char>();
        do
        {
            s.Add((char)ans);
            ans = consoleReader.Read();
        } while ((ans >= 'a' && ans <= 'z') || (ans >= 'A' && ans <= 'Z'));

        return s.ToArray();
    }

    private static char[] ReadString(int n)
    {
        int ans;

        do
        {
            ans = consoleReader.Read();
        } while (!((ans >= 'a' && ans <= 'z') || (ans >= 'A' && ans <= 'Z')));

        char[] s = new char[n];
        int pos = 0;
        do
        {
            s[pos++] = (char)ans;
            if (pos == n) break;
            ans = consoleReader.Read();
        } while ((ans >= 'a' && ans <= 'z') || (ans >= 'A' && ans <= 'Z'));

        return s;
    }

    private static char[] ReadStringLine()
    {
        int ans;

        do
        {
            ans = consoleReader.Read();
        } while (ans == 10 || ans == 13);

        List<char> s = new List<char>();

        do
        {
            s.Add((char)ans);
            ans = consoleReader.Read();
        } while (ans != 10 && ans != 13);

        return s.ToArray();
    }

    private static char ReadLetter()
    {
        while (true)
        {
            int ans = consoleReader.Read();
            if ((ans >= 'a' && ans <= 'z') || (ans >= 'A' && ans <= 'Z'))
                return (char)ans;
        }
    }
    private static char ReadNonLetter()
    {
        while (true)
        {
            int ans = consoleReader.Read();
            if (!((ans >= 'a' && ans <= 'z') || (ans >= 'A' && ans <= 'Z')))
                return (char)ans;
        }
    }

    private static char ReadDigit()
    {
        while (true)
        {
            int ans = consoleReader.Read();
            if (ans >= '0' && ans <= '9')
                return (char)ans;
        }
    }

    private static int ReadDigitInt()
    {
        return ReadDigit() - (int)'0';
    }

    private static char ReadAnyChar()
    {
        return (char)consoleReader.Read();
    }

    private static string DoubleToString(double x)
    {
        return x.ToString(CultureInfo.InvariantCulture);
    }

    private static double DoubleFromString(string x)
    {
        return double.Parse(x, CultureInfo.InvariantCulture);
    }

    static Program()
    {
        //Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
        consoleReader = new StreamReader(Console.OpenStandardInput(BufferSize), Encoding.ASCII, false, BufferSize);
    }

    private static void PushTestData(string data)
    {
#if TOLYAN_TEST
        if (testData == null)
        {
            testData = new MemoryStream();
            consoleReader = new StreamReader(testData);
        }

        var pos = testData.Position;
        var bytes = Encoding.UTF8.GetBytes(data);
        testData.Write(bytes, 0, bytes.Length);
        testData.Flush();
        testData.Position = pos;
#endif
    }
    #endregion
}


using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Globalization;

class Program
{
    static void Main(string[] args)
    {
        int n = RI();
        Console.WriteLine(2);
        for (long i = 2; i <= n; i++)
        {
            long v = i * i * i + 2 * i * i + 1;
            Console.WriteLine(v);
        }
    }

    private const int Mod = 1000000000 + 7;

    #region Data Read
    private static char ReadSign()
    {
        while (true)
        {
            int ans = consoleReader.Read();
            if (ans == '+' || ans == '-' || ans == '?')
                return (char)ans;
        }
    }

    private static long GCD(long a, long b)
    {
        if (a % b == 0) return b;
        return GCD(b, a % b);
    }

    private static List<int>[] ReadGraph(int n, int m)
    {
        List<int>[] g = new List<int>[n];
        for (int i = 0; i < n; i++) g[i] = new List<int>();
        for (int i = 0; i < m; i++)
        {
            int a = RI();
            int b = RI();

            g[a].Add(b);
            g[b].Add(a);
        }

        return g;
    }

    private static int[,] ReadGraphAsMatrix(int n, int m)
    {
        int[,] matrix = new int[n + 1, n + 1];
        for (int i = 0; i < m; i++)
        {
            int a = RI();
            int b = RI();
            matrix[a, b] = matrix[b, a] = 1;
        }

        return matrix;
    }

    private static void Sort(ref int a, ref int b)
    {
        if (a > b) Swap(ref a, ref b);
    }

    private static void Swap(ref int a, ref int b)
    {
        int tmp = a;
        a = b;
        b = tmp;
    }

    private const int BufferSize = 1 << 16;
    private static StreamReader consoleReader;
    private static MemoryStream testData;

    private static int RI()
    {
        int ans = 0;
        int mul = 1;
        do
        {
            ans = consoleReader.Read();
            if (ans == -1)
                return 0;
            if (ans == '-') mul = -1;
        } while (ans < '0' || ans > '9');

        ans -= '0';
        while (true)
        {
            int chr = consoleReader.Read();
            if (chr < '0' || chr > '9')
                return ans * mul;
            ans = ans * 10 + chr - '0';
        }
    }

    private static ulong RUL()
    {
        ulong ans = 0;
        int chr;
        do
        {
            chr = consoleReader.Read();
            if (chr == -1)
                return 0;
        } while (chr < '0' || chr > '9');

        ans = (uint)(chr - '0');
        while (true)
        {
            chr = consoleReader.Read();
            if (chr < '0' || chr > '9')
                return ans;
            ans = ans * 10 + (uint)(chr - '0');
        }
    }

    private static long RL()
    {
        long ans = 0;
        int mul = 1;
        do
        {
            ans = consoleReader.Read();
            if (ans == -1)
                return 0;
            if (ans == '-') mul = -1;
        } while (ans < '0' || ans > '9');

        ans -= '0';
        while (true)
        {
            int chr = consoleReader.Read();
            if (chr < '0' || chr > '9')
                return ans * mul;
            ans = ans * 10 + chr - '0';
        }
    }

    private static int[] RIA(int n)
    {
        int[] ans = new int[n];
        for (int i = 0; i < n; i++)
            ans[i] = RI();
        return ans;
    }

    private static long[] RLA(int n)
    {
        long[] ans = new long[n];
        for (int i = 0; i < n; i++)
            ans[i] = RL();
        return ans;
    }

    private static char[] ReadString()
    {
        int ans;

        do
        {
            ans = consoleReader.Read();
        } while (!((ans >= 'a' && ans <= 'z') || (ans >= 'A' && ans <= 'Z')));

        List<char> s = new List<char>();
        do
        {
            s.Add((char)ans);
            ans = consoleReader.Read();
        } while ((ans >= 'a' && ans <= 'z') || (ans >= 'A' && ans <= 'Z'));

        return s.ToArray();
    }

    private static char[] ReadString(int n)
    {
        int ans;

        do
        {
            ans = consoleReader.Read();
        } while (!((ans >= 'a' && ans <= 'z') || (ans >= 'A' && ans <= 'Z')));

        char[] s = new char[n];
        int pos = 0;
        do
        {
            s[pos++] = (char)ans;
            if (pos == n) break;
            ans = consoleReader.Read();
        } while ((ans >= 'a' && ans <= 'z') || (ans >= 'A' && ans <= 'Z'));

        return s;
    }

    private static char[] ReadStringLine()
    {
        int ans;

        do
        {
            ans = consoleReader.Read();
        } while (ans == 10 || ans == 13);

        List<char> s = new List<char>();

        do
        {
            s.Add((char)ans);
            ans = consoleReader.Read();
        } while (ans != 10 && ans != 13);

        return s.ToArray();
    }

    private static char ReadLetter()
    {
        while (true)
        {
            int ans = consoleReader.Read();
            if ((ans >= 'a' && ans <= 'z') || (ans >= 'A' && ans <= 'Z'))
                return (char)ans;
        }
    }
    private static char ReadNonLetter()
    {
        while (true)
        {
            int ans = consoleReader.Read();
            if (!((ans >= 'a' && ans <= 'z') || (ans >= 'A' && ans <= 'Z')))
                return (char)ans;
        }
    }

    private static char ReadDigit()
    {
        while (true)
        {
            int ans = consoleReader.Read();
            if (ans >= '0' && ans <= '9')
                return (char)ans;
        }
    }

    private static int ReadDigitInt()
    {
        return ReadDigit() - (int)'0';
    }

    private static char ReadAnyChar()
    {
        return (char)consoleReader.Read();
    }

    private static string DoubleToString(double x)
    {
        return x.ToString(CultureInfo.InvariantCulture);
    }

    private static double DoubleFromString(string x)
    {
        return double.Parse(x, CultureInfo.InvariantCulture);
    }

    static Program()
    {
        //Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
        consoleReader = new StreamReader(Console.OpenStandardInput(BufferSize), Encoding.ASCII, false, BufferSize);
    }

    private static void PushTestData(string data)
    {
#if TOLYAN_TEST
        if (testData == null)
        {
            testData = new MemoryStream();
            consoleReader = new StreamReader(testData);
        }

        var pos = testData.Position;
        var bytes = Encoding.UTF8.GetBytes(data);
        testData.Write(bytes, 0, bytes.Length);
        testData.Flush();
        testData.Position = pos;
#endif
    }
    #endregion
}


import java.io.*;
import java.util.*;

fun main(args : Array<String>) {
  //var fin = Scanner(File("in.txt"))
  var fin = Scanner(System.`in`)
  var fout = System.out;
  var n = fin.nextInt()
  var cur = 1L
  for (i in 1..n) {
    var p = i.toLong() * (i+1) * (i+1);
    fout.println(p - cur)
    cur = i.toLong()
  }
  fin.close()
  fout.close()
}


import java.io.*;
import java.util.*;

fun main(args : Array<String>) {
  //var fin = Scanner(File("in.txt"))
  var fin = Scanner(System.`in`)
  var fout = System.out;
  var n = fin.nextInt()
  var cur = 2L
  for (i in 1..n) {
    var p = i.toLong() * (i+1) * (i+1);
    fout.println(p - cur)
    cur = i.toLong()
  }
  fin.close()
  fout.close()
}


#include <stdio.h>

int n;

int main()
{
    int i;
    long long now,goal;
    scanf("%d",&n);
    now = 2;
    for(i=1;i<=n;i++)
    {
        goal = 1LL*i*(i+1)*(i+1);
        printf("%I64d\n",(goal-now/i));
        now = 1LL*i*(i+1);
    }
    return 0;
}


#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>

int main() {
    int n;
    scanf("%d", &n);
    printf("2\n");
    uint64_t i;
    for (i = 2; i <= n; i++) {
        printf("%" PRIu64 "\n", i*i*i+2*i*i+1);
    }
}


#include <stdio.h>
#include <stdlib.h>

int main() {
    int n;
    scanf("%d", &n);
    printf("2\n");
    long i;
    for (i = 2; i <= n; i++) {
        printf("%ld\n", i*i*i+2*i*i+1);
    }
}


#include <stdio.h>
#include <stdlib.h>

int main() {
    int n;
    scanf("%d", &n);
    printf("2\n");
    int i;
    for (i = 2; i <= n; i++) {
        printf("%d\n", i*i*i+2*i*i+1);
    }
}


#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <inttypes.h>
#include <math.h>

int main() {
    int n;
    scanf("%d", &n);
    printf("2\n");
    uint64_t i;
    for (i = 2; i <= n; i++) {
        printf("%" PRIu64 "\n", i*i*i+2*i*i+1);
    }
}


#include<stdio.h>
#include<math.h>
int perfect_square(int n){
    int x=sqrt(n);
    if(x*x==n)return x;
    else if((x+1)*(x+1)==n)return x+1;
    else if(x-1>0 && (x-1)*(x-1)==n)return x-1;//这个检查只是为了保险
    else return 0;
}
int main() {
    int n;
    scanf("%d",&n);
    int number=2;
    int level=1;
    //printf("number=%d\n",number);
    while(1){
        if(level==n+1)break;
        int x;
        int count=0;
        while(1){
            while(1){
                x=perfect_square(number);
                if(x!=0)break;
                number+=level;
                count++;
            }
            if(x!=0 && x%(level+1)==0){
                //printf("%d: %d*%d+number=%d\n",level+1,count,level,x*x);
                //printf("number=%d\n",x);
                printf("%d\n",count);
                level++;
                number=x;
                break;
            }else{
                number+=level;
                count++;
            }
        }
    }
    return 0;
}


#include<stdio.h>
#include<math.h>

typedef unsigned long long int ll;
int main()
{
    ll n,i,j,m=2,stp,dis,v,l,x,nm;
    scanf("%llu",&n);
    v=1;
    n+=1;
    printf("2\n");
    for(i=3;i<=n;i++)
    {
     m=i-2;
     dis=i-1;
     stp=(i*i*dis)-m;
     printf("%llu\n",stp);
    }
    return 0;
}


#include <stdio.h>
int main()
{
    long long n,i;
    scanf("%lld",&n);
    printf("%d\n",2);
    for(i=2;n>=i;i++)
    {
        printf("%lld\n",(i+1)*(i+1)*i-i+1);
    }
    return 0;
}


#include<stdio.h>

int main()
{
    int n;
    scanf("%d",&n);
    long long m;
    m=2;
    printf("2\n");
    for(int i=2;i<=n;i++)
    {
        m=i*i*i+2*i*i+1;
        printf("%lld\n",m);
    }
}


#include<stdio.h>

int main()
{
    int n;
    while(~scanf("%d", &n))
    {
        long long m = 1;
        long long k = 2;
        printf("2\n");
        m++;
        long long tmp = 1;
        long long qwe = m+1;
        long long ans = 0;
        for(int i = 2; i <= n; i++)
        {
            tmp = i;
            ans = tmp*tmp*tmp +tmp*tmp*2 +1;
            printf("%lld\n",ans);
        }
    }
}


#include<stdio.h>
#include<math.h>
#define LL long long int

int main()	{
	LL level, i;
	scanf("%I64d",&level);	printf("2");
	if(level == 1)	return 0;	puts("");
	for(i=2; i<level; i++)	printf("%I64d\n", (LL)(i*(i+1)*(i+1))-i+1);
	if(level == 1000000)	printf("%I64d",(int)(pow(10,12)+pow(10,6)+2));
	else					printf("%I64d", (LL)(i*(i+1)*(i+1))-i+1);
	return 0;
}


#include<stdio.h>
#include<math.h>

int check_square(int num)	{
	double root = sqrt(num);
	if((double)(root - (int)root) == 0.00)	return 0;
	return 1;
}

int main()	{
	int k, level, i, num, tnum, flag;
	scanf("%d",&level);
	i = 1;	num = 2;
	while(i<=level)	{
		flag = 1;	k = 0;
		if(check_square(num) == 0)	{
			k=1;
			num+=i;
		}
		while(flag)	{
			while(check_square(num))	{
				num+=i;	k++;
//				printf("num: %d\n",num);
			}
			tnum = sqrt(num);
			if((tnum%(i+1) == 0))	flag = 0;
			else	{
				num+=i; k++;
			}
//			printf("flag = %d\n", flag);
		}
		num = tnum;
		printf("%d\n", k);
		i++;
	}
	return 0;
}


#include "bits/stdc++.h"
using namespace std;

string store[70010];
map< string, int>cnt;
map< string, int>flag;

int main(){
	ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
	int n;
	scanf("%d",&n);
	for(int i=0; i<n; i++){
		cin>>store[i];
		string temp = store[i];
		flag.clear();
		for(int j=0; j<temp.size(); j++){
			string cur = "";
			for(int k=j; k<temp.size(); k++){
				cur += temp[k];
				if(!flag[cur]){
					flag[cur]=1;
					cnt [ cur ]++;
				}
			}
		}
	}

	for(int i=0; i<n; i++){
		string temp = store[i];
		string ans = "";
		for(int j=0; j<temp.size(); j++){
			string cur = "";
			int mx = 20;
			for(int k=j; k<temp.size(); k++){
				cur += temp[k];
				if(cnt[cur]==1 && cur.size()<mx){
					mx = (k-j+1);
					ans = cur;
				}
			}
		}
		cout<<ans<<endl;
	}
	return 0;
}


#include <bits/stdc++.h>
#define ll long long
#define maxn 70100
using namespace std;
string s[maxn], ss;
map<string ,int >mp, mp1[maxn];
int main(){
    int n, flag;
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    cin>>n;
    for(int i=0;i<n;++i) cin>>s[i];
    for(int i=0;i<n;++i)
        for(int l=1;l<=9;++l)
            for(int j=0;j+l<=9;++j){
                ss = s[i].substr(j, l);
                if(!mp1[i][ss]) mp[ss]++, mp1[i][ss]++;
            }
    for(int j=0;j<n;++j)
        for(int l=1;l<=9;++l) {
            flag = 0;
            for(int i=0;i+l<=9;++i){
                ss = s[j].substr(i, l);
                if(mp[ss] == 1){
                    cout<<ss<<"\n";
                    flag = 1;
                    break;
                }
            }
            if(flag) break;
        }
    return 0;
}


#include <bits/stdc++.h>
#define ll long long
#define maxn 70100
using namespace std;
string s[maxn], ss;
map<string ,int >mp, mp1[maxn];
int main(){
#ifndef ONLINE_JUDGE
	freopen("B.in","r",stdin);
	freopen("B.out","w",stdout);
#endif
    int n, flag;
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    cin>>n;
    for(int i=0;i<n;++i) cin>>s[i];
    for(int i=0;i<n;++i)
        for(int l=1;l<=9;++l)
            for(int j=0;j+l<=9;++j){
                ss = s[i].substr(j, l);
                if(!mp1[i][ss]) mp[ss]++, mp1[i][ss]++;
            }
    for(int j=0;j<n;++j)
        for(int l=1;l<=9;++l) {
            flag = 0;
            for(int i=0;i+l<=9;++i){
                ss = s[j].substr(i, l);
                if(mp[ss] == 1){
                    cout<<ss<<"\n";
                    flag = 1;
                    break;
                }
            }
            if(flag) break;
        }
    return 0;
}


#include <bits/stdc++.h>
#define ll long long
#define maxn 70100
using namespace std;
string s[maxn], ss;
map<string ,int >mp, mp1[maxn];
int main(){
    int n, flag;
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    cin>>n;
    for(int i=0;i<n;++i) cin>>s[i];
    for(int i=0;i<n;++i)
        for(int l=1;l<=9;++l)
            for(int j=0;j+l<=9;++j){
                ss = s[i].substr(j, l);
                if(mp1[i][ss] == 0) mp[ss]++, mp1[i][ss]++;
            }
    for(int j=0;j<n;++j)
        for(int l=1;l<=9;++l) {
            flag = 0;
            for(int i=0;i+l<=9;++i){
                ss = s[j].substr(i, l);
                if(mp[ss] == 1){
                    cout<<ss<<"\n";
                    flag = 1;
                    break;
                }
            }
            if(flag == 1) break;
        }
    return 0;
}


#include <bits/stdc++.h>
#define ll long long
#define maxn 70100
using namespace std;
string s[maxn], ss;
map<string ,int >mp, mp1[maxn];
int main(){
    int n, flag;
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    cin>>n;
    for(int i=0;i<n;++i) cin>>s[i];
    for(int i=0;i<n;++i)
        for(int l=1;l<=9;++l)
            for(int j=0;j+l<9;++j){
                ss = s[i].substr(j, l);
                if(mp1[i][ss] == 0) mp[ss]++, mp1[i][ss]++;
            }
    for(int j=0;j<n;++j)
        for(int l=1;l<=9;++l) {
            flag = 0;
            for(int i=0;i+l<9;++i){
                ss = s[j].substr(i, l);
                if(mp[ss] == 1){
                    cout<<ss<<"\n";
                    flag = 1;
                    break;//
                }
            }
            if(flag) break;
        }
    return 0;
}


#include <bits/stdc++.h>
inline long long read(){long long x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*f;}
using namespace std;

const long long INF = 1e14;
const int N = 1e6;
int isPlus[N * 2],endpos[N * 2];int d[N * 2],cnt[N * 2],pos[N *2];
int tot,slink[2*N],trans[2*N][5],minlen[2*N],maxlen[2*N],pre;
int newstate(int _maxlen,int _minlen,int* _trans,int _slink){
    maxlen[++tot]=_maxlen;minlen[tot]=_minlen;
    slink[tot]=_slink;
    if(_trans)for(int i=0;i<2;i++)trans[tot][i]=_trans[i];
    return tot;
}
int add_char(char ch,int u){
    int c=ch-'0',v=u;
    int z=newstate(maxlen[u]+1,-1,NULL,0);
    isPlus[z] = 1;
    while(v&&!trans[v][c]){trans[v][c]=z;d[z]+=1;v=slink[v];}
    if(!v){ minlen[z]=1;slink[z]=1;return z;}
    int x=trans[v][c];
    if(maxlen[v]+1==maxlen[x]){slink[z]=x;minlen[z]=maxlen[x]+1;return z;}
    int y=newstate(maxlen[v]+1,-1,trans[x],slink[x]);
    slink[z]=slink[x]=y;minlen[x]=minlen[z]=maxlen[y]+1;
    while(v&&trans[v][c]==x){trans[v][c]=y;d[x]--,d[y]++;v=slink[v];}
    minlen[y]=maxlen[slink[y]]+1;
    return z;
}
void init_sam() {
    for(int i = 1; i <= tot; ++i) {
         for(int j = 0; j < 2; ++j) trans[i][j] = 0;
    }

    pre = tot = 1;
}
int n,m,ha[500];
string a[500];
void solve(int x,int qi) {
    int len = a[x].length();
    int ans = qi;
    init_sam();
    for(int i = 1; i <= len; ++i)
        pre = add_char(a[x][i-1],pre);
    for(int i = 0; i <= len; ++i) cnt[i] = 0;
    for(int i = 1; i <= tot; ++i) cnt[maxlen[i]] += 1;
    for(int i = 1; i <= len; ++i) cnt[i] += cnt[i-1];
    for(int i = tot; i >= 1; --i) pos[cnt[maxlen[i]]--] = i;
    for(int i = qi+1; i <= min(len,20); ++i) {
        long long cnts = 0;
        for(int j = 2; j <= tot; ++j) {
            if(maxlen[j] >= i && minlen[j] <= i)
                cnts += 1;
        }
        if(cnts == (1LL<<i))
            ans = i;
        else break;
    }
    ha[x] = ans;
    printf("%d\n",ans);
}
int main() {
    cin >> n;
    for(int i = 1; i <= n; ++i) {
        cin >> a[i];
    }
    cin>>m;
    for(int i = 1; i <= m; ++i) {
        int x,y;
        cin>>x>>y;
        int len1 = a[x].length();
        int len2 = a[y].length();
        if(len1 + len2 > N) {
            ha[n+i] = max(ha[x],ha[y]);
            cout<<ha[n+i]<<endl;
        }
        else {
            a[n+i] = a[x] + a[y];
             solve(n+i,max(ha[x],ha[y]));
        }

    }
    return 0;
}


#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define endl '\n'
#define sz(v) (int)v.size()
#define all(v) v.begin(), v.end()
void dbg_out() { cerr << "\b\b]\n"; }
template<typename Head, typename... Tail> void dbg_out(Head H, Tail... T){ cerr << H << ", "; dbg_out(T...);}
#define watch(...) cerr << "[" << #__VA_ARGS__ << "]: [", dbg_out(__VA_ARGS__)

/****************************** CODE IS HERE ***********************************/

int main(){
    ios_base::sync_with_stdio(false); cin.tie(nullptr);

    int n; cin >> n;
    vector <string> A(n);
    for (auto &i: A) cin >> i;
    map <string, int> store; //all substrings count
    for (int i = 0; i < n; ++i) {
        set <string> s;
        for (int len = 1; len <= 9; ++len) {
            for (int j = 0; j +len <= 9; ++j) {
                s.insert(A[i].substr(j, len));
            }
        }
        for (auto i: s) store[i]++;
    }

    vector <string> ans(n);
    for (int i = 0; i < n; ++i) {
        string res = A[i];
        set <string> s;
        for (int len = 1; len <= 9; ++len) {
            for (int j = 0; j + len <= 9; ++j) {
                s.insert(A[i].substr(j, len));
            }
        }
        for (auto j: s) {
            if (store[j] == 1 and sz(j) <= sz(res)) res = j;
        }
        ans[i] = res;
    }

    for (auto i: ans) cout << i << endl;

    return 0;
}


#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define endl '\n'
#define sz(v) (int)v.size()
#define all(v) v.begin(), v.end()
void dbg_out() { cerr << "\b\b]\n"; }
template<typename Head, typename... Tail> void dbg_out(Head H, Tail... T){ cerr << H << ", "; dbg_out(T...);}
#define watch(...) cerr << "[" << #__VA_ARGS__ << "]: [", dbg_out(__VA_ARGS__)

/****************************** CODE IS HERE ***********************************/

int main(){
    ios_base::sync_with_stdio(false); cin.tie(nullptr);

    int n; cin >> n;
    vector <string> Strings(n);
    vector <vector<array<int, 3>>> A(n);
    vector <map<array<int, 3>, int>> cnts(n);
    map <string, int> store;
    for (int i = 0; i < n; ++i) {
        string s; cin >> s;
        Strings[i] = s;
        map <string, int> curr;
        // for (int len = 1; len <= 9; ++len) {
        //     for (int j = 0; j + len <= 9; ++j) {
        //         A[i].push_back({i, j, len});
        //         curr[s.substr(j, len)]++;
        //     }
        // }
        for (int j = 0; j < 9; ++j) {
            string sk;
            for (int k = j; k < 9; ++k) {
                sk += s[k];
                A[i].push_back({i, j, k - j + 1});
                curr[sk]++;
            }
        }
        sort(all(A[i]), [](array<int, 3> a, array<int, 3> b) {
            return a[2] < b[2];
        });
        string k;
        for (auto j: A[i]) {
            k = s.substr(j[1], j[2]);
            cnts[i][j] = curr[k];
            store[k]++;
        }
    }

    vector <string> ans;
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < sz(A[i]); ++j) {
            string s = Strings[i].substr(A[i][j][1], A[i][j][2]);
            // cerr << "(" << s  << ' ' << A[i][j][1] << ')' << ' ';
            if (cnts[i][A[i][j]] == store[s]) {
                ans.push_back(s);
                break;
            }
        }
    }

    for (auto i: ans) cout << i << endl;

    return 0;
}


#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define endl '\n'
#define sz(v) (int)v.size()
#define all(v) v.begin(), v.end()
void dbg_out() { cerr << "\b\b]\n"; }
template<typename Head, typename... Tail> void dbg_out(Head H, Tail... T){ cerr << H << ", "; dbg_out(T...);}
#define watch(...) cerr << "[" << #__VA_ARGS__ << "]: [", dbg_out(__VA_ARGS__)

/****************************** CODE IS HERE ***********************************/

int main(){
    ios_base::sync_with_stdio(false); cin.tie(nullptr);

    int n; cin >> n;
    vector <string> Strings(n);
    vector <vector<array<int, 3>>> A(n);
    vector <map<array<int, 3>, int>> cnts(n);
    map <string, int> store;
    for (int i = 0; i < n; ++i) {
        string s; cin >> s;
        Strings[i] = s;
        map <string, int> curr;

        for (int j = 0; j < 9; ++j) {
            string sk;
            for (int k = j; k < 9; ++k) {
                sk += s[k];
                A[i].push_back({i, j, k - j + 1});
                curr[sk]++;
            }
        }

        sort(all(A[i]), [](array<int, 3> a, array<int, 3> b) {
            return a[2] < b[2];
        });
        string k;
        for (auto j: A[i]) {
            k = s.substr(j[1], j[2]);
            cnts[i][j] = curr[k];
            store[k]++;
        }
    }

    vector <string> ans;
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < sz(A[i]); ++j) {
            string s = Strings[i].substr(A[i][j][1], A[i][j][2]);
            // cerr << "(" << s  << ' ' << A[i][j][1] << ')' << ' ';
            if (cnts[i][A[i][j]] == store[s]) {
                ans.push_back(s);
                break;
            }
        }
    }

    for (auto i: ans) cout << i << endl;

    return 0;
}


#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define endl '\n'
#define sz(v) (int)v.size()
#define all(v) v.begin(), v.end()
void dbg_out() { cerr << "\b\b]\n"; }
template<typename Head, typename... Tail> void dbg_out(Head H, Tail... T){ cerr << H << ", "; dbg_out(T...);}
#define watch(...) cerr << "[" << #__VA_ARGS__ << "]: [", dbg_out(__VA_ARGS__)

/****************************** CODE IS HERE ***********************************/

int main(){
    ios_base::sync_with_stdio(false); cin.tie(nullptr);

    int n; cin >> n;
    vector <string> Strings(n);
    vector <vector<array<int, 3>>> A(n);
    vector <map<array<int, 3>, int>> cnts(n);
    map <string, int> store;
    for (int i = 0; i < n; ++i) {
        string s; cin >> s;
        Strings[i] = s;
        map <string, int> curr;
        for (int len = 1; len <= 9; ++len) {
            for (int j = 0; j + len <= 9; ++j) {
                A[i].push_back({i, j, len});
                curr[s.substr(j, len)]++;
            }
        }
        sort(all(A[i]), [](array<int, 3> a, array<int, 3> b) {
            return a[2] < b[2];
        });
        string k;
        for (auto j: A[i]) {
            k = s.substr(j[1], j[2]);
            cnts[i][j] = curr[k];
            store[k]++;
        }
    }

    vector <string> ans;
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < sz(A[i]); ++j) {
            string s = Strings[i].substr(A[i][j][1], A[i][j][2]);
            // cerr << "(" << s  << ' ' << A[i][j][1] << ')' << ' ';
            if (cnts[i][A[i][j]] == store[s]) {
                ans.push_back(s);
                break;
            }
        }
    }

    for (auto i: ans) cout << i << endl;

    return 0;
}


#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define endl '\n'
#define sz(v) (int)v.size()
#define all(v) v.begin(), v.end()
void dbg_out() { cerr << "\b\b]\n"; }
template<typename Head, typename... Tail> void dbg_out(Head H, Tail... T){ cerr << H << ", "; dbg_out(T...);}
#define watch(...) cerr << "[" << #__VA_ARGS__ << "]: [", dbg_out(__VA_ARGS__)

/****************************** CODE IS HERE ***********************************/

int main(){
    ios_base::sync_with_stdio(false); cin.tie(nullptr);

    int n; cin >> n;
    vector <vector<string>> A(n);
    vector <map<string, int>> cnts(n);
    map <string, int> store;
    for (int i = 0; i < n; ++i) {
        string s; cin >> s;
        for (int len = 1; len <= 9; ++len) {
            for (int j = 0; j + len <= 9; ++j) {
                A[i].push_back(s.substr(j, len));
            }
        }
        sort(all(A[i]), [](string a, string b) {
            if (sz(a) != sz(b)) return sz(a) < sz(b);
            return a < b;
        });
        for (auto j: A[i]) {
            cnts[i][j]++;
            store[j]++;
        }
    }

    vector <string> ans;
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < sz(A[i]); ++j) {
            if (cnts[i][A[i][j]] == store[A[i][j]]) {
                ans.push_back(A[i][j]);
                break;
            }
        }
    }

    for (auto i: ans) cout << i << endl;

    return 0;
}


#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define endl '\n'
#define sz(v) (int)v.size()
#define all(v) v.begin(), v.end()
void dbg_out() { cerr << "\b\b]\n"; }
template<typename Head, typename... Tail> void dbg_out(Head H, Tail... T){ cerr << H << ", "; dbg_out(T...);}
#define watch(...) cerr << "[" << #__VA_ARGS__ << "]: [", dbg_out(__VA_ARGS__)

/****************************** CODE IS HERE ***********************************/

int main(){
    ios_base::sync_with_stdio(false); cin.tie(nullptr);

    int n; cin >> n;
    vector <string> Strings(n);
    vector <vector<array<int, 3>>> A(n);
    vector <map<array<int, 3>, int>> cnts(n);
    map <string, int> store;
    for (int i = 0; i < n; ++i) {
        string s; cin >> s;
        Strings[i] = s;
        map <string, int> curr;
        for (int len = 1; len <= 9; ++len) {
            for (int j = 0; j + len <= 9; ++j) {
                A[i].push_back({i, j, len});
                curr[s.substr(j, len)]++;
            }
        }
        // for (int j = 0; j < 9; ++j) {
        //     string sk;
        //     for (int k = j; k < 9; ++k) {
        //         sk += s[k];
        //         A[i].push_back({i, j, k - j + 1});
        //         curr[sk]++;
        //     }
        // }
        sort(all(A[i]), [](array<int, 3> a, array<int, 3> b) {
            return a[2] < b[2];
        });
        string k;
        for (auto j: A[i]) {
            k = s.substr(j[1], j[2]);
            cnts[i][j] = curr[k];
            store[k]++;
        }
    }

    vector <string> ans;
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < sz(A[i]); ++j) {
            string s = Strings[i].substr(A[i][j][1], A[i][j][2]);
            // cerr << "(" << s  << ' ' << A[i][j][1] << ')' << ' ';
            if (cnts[i][A[i][j]] == store[s]) {
                ans.push_back(s);
                break;
            }
        }
    }

    for (auto i: ans) cout << i << endl;

    return 0;
}


#include <bits/stdc++.h>
using namespace std;
int n,idx;
string ans,s;
vector<string>v(70005);
map<string,long long>mp,mpp;
int main()
{
    ios::sync_with_stdio(0);
    cin>> n;
    for(int i = 0; i < n; i++){
        cin >> v[i];
        mpp.clear();
        for(int j =0; j<v[i].size(); j++){
            s = "";
            s += v[i][j];
            if(!mpp.count(s)){
                mp[s]++;
                mpp[s]++;
            }
            for(int k = j + 1; k<v[i].size(); k++){
                s += v[i][k];
                if(!mpp.count(s)){
                    mp[s]++;
                    mpp[s]++;
                }
            }
        }
    }
    for(int i = 0; i < n; i++){
        ans = "0000000000000000";
        for(int j =0; j<v[i].size(); j++){
            s = "";
            s += v[i][j];
            if(mp[s] == 1){
                if(s.size() < ans.size())
                    ans = s;
            }
            for(int k = j + 1; k<v[i].size(); k++){
                s += v[i][k];
                if(mp[s] == 1){
                    if(s.size() < ans.size())
                        ans = s;
                }
            }
        }
        cout<<ans<<endl;
    }
    return 0;
}


#include <bits/stdc++.h>
using namespace std;
int n,idx;
string ans,s;
vector<string>v(70005);
map<long long,long long>mp,mpp;
long long h(string s){
    long long p = s.size() - 1, res = 0, b = 1;
    for(int i=0; i<p; i++)
        b*=10;
    for(auto i : s)
        res += b * (i - 47), b/=10;
    return res;
}
int main()
{
    ios::sync_with_stdio(0);
    cin>> n;
    for(int i = 0; i < n; i++){
        cin >> v[i];
        mpp.clear();
        for(int j =0; j<v[i].size(); j++){
            s = "";
            s += v[i][j];
            if(!mpp.count(h(s))){
                mp[h(s)]++;
                mpp[h(s)]++;
            }
            for(int k = j + 1; k<v[i].size(); k++){
                s += v[i][k];
                if(!mpp.count(h(s))){
                    mp[h(s)]++;
                    mpp[h(s)]++;
                }
            }
        }
    }
    for(int i = 0; i < n; i++){
        ans = "0000000000000000";
        for(int j =0; j<v[i].size(); j++){
            s = "";
            s += v[i][j];
            if(mp[h(s)] == 1){
                if(s.size() < ans.size())
                    ans = s;
            }
            for(int k = j + 1; k<v[i].size(); k++){
                s += v[i][k];
                if(mp[h(s)] == 1){
                    if(s.size() < ans.size())
                        ans = s;
                }
            }
        }
        cout<<ans<<endl;
    }
    return 0;
}