#include <bits/stdc++.h>
using namespace std;
char infile[100], outfile[100];
long long int A[200100], ans, C[500100], B[500100], D[100100], E[500100];
vector <long long int> V[500100];
void f(long long int a, long long int b,long long int c,long long int d,long long int e){
	if(V[a].size()==d){
		if(e==1){
			if(c%2==1){
				B[b]--;
				ans = ans + B[b];
			}else{
				B[b]--;
				ans = ans - B[b];
			}
		}else{
			if(c%2==1){
				ans = ans - B[b];
				B[b]++;
			}else{
				ans = ans + B[b];
				B[b]++;
			}
		}
		return;
	} 
	f(a,b,c,d+1,e);
	f(a,b*V[a][d],c+1,d+1,e);
}
int main(){
	long long int n, m, i,a,j, I;
	//scanf("%lld %lld",&n, &m);
	for(i=1;i<500001;i++){
		if(V[i].size()<2){
			for(j=i;j<=500001;j=j+i){
				V[j].push_back(i);
			}
		}
	}
	for(I=11;I<=50;I++){
		sprintf(infile, ".%d.in", I);
	    freopen(infile, "w", stdout);
		//scanf("%lld",&m);
		m = 100000;
		printf("%lld\n",m);
		ans = 0;
		for(i=0;i<500100;i++)B[i]=0;
		//for(i=1;i<=n;i++) scanf("%lld",A+i);		
		for(i=0;i<m;i++){
			//scanf("%lld",&a);
			a = (rand()*1000+rand())%500000+1;
			while(E[a]==I){
				a = (rand()*1000+rand())%500000+1;
			}
			E[a]=I;
			printf("%lld\n",a);
			f(a,1,0,1,C[a]);
			//C[a] = !C[a];
			D[i]=ans;
			//printf("%lld\n",ans);
		}
		sprintf(outfile, ".%d.out", I);
	    freopen(outfile, "w", stdout);
		for(i=0;i<m;i++) printf("%lld\n",D[i]);
	}
	return 0;
}
