/* compatible with http://kk.kake.info.waseda.ac.jp/~kakehi/lp12/wl/ */
#include <stdio.h>
enum{M=5000};
bigint_init(int a[], int x){
	int z;
	z=0;
	while(z<=M){a[z]=0;z=z+1;}
	a[M]=0;
	while(x/10){a[a[M]]=x%10;a[M]=a[M]+1;x=x/10;}
	a[a[M]]=x%10;
	a[M]=a[M]+1;
}
bigint_print(int a[]){
	int i;
	i=a[M]-1;
	while(i>-1){fputc(a[i]+'0',stdout);i=i-1;}
}
bigint_add(int a[], int x[]){
	int i,c;
	i=0;
	c=0;
	while(i<M){
		a[i]=a[i]+x[i]+c;
		c=a[i]/10;
		a[i]=a[i]%10;
		if(a[i])a[M]=i+1;
		i=i+1;
	}
}
bigint_mul(int _a[], int x[]){
    int i=_a[M]-1,j,c=0;
    int a[M];
    while(c<M){a[c]=0;c=c+1;}
	c=0;
    for(;~i;i--)
      for(j=0;j<x[M];j++)
        a[i+j]+=_a[i]*x[j];
    for(i=0;i<M;i++){
      a[i]+=c;
      c=a[i]/10,a[i]%=10;
      if(a[i])_a[M]=i+1;
    }
    memcpy(_a,a,sizeof(a));
}

int main(){
	int f1[M+1],f2[M+1],f3[M+1];
	bigint_init(f1,1);
	int i=2,n;
	while(i<1501){
		bigint_init(f2,i);
		bigint_mul(f1,f2);
		i=i+1;
	}
	bigint_init(f2,2);
	bigint_add(f1,f2);
	bigint_print(f1);
	fputc('\n',stdout);
	i=0;
	scanf("%d",&n);
	while(i<n){
		bigint_init(f1,i+2);
		bigint_print(f1);
		fputc('\n',stdout);
		i=i+1;
	}
	return 0;
}

/***********************************************************************/
/***********************************************************************/
/***********************************************************************/
/***********************************************************************/
/***********************************************************************/
/***********************************************************************/
/***********************************************************************/
/***********************************************************************/
/***********************************************************************/
/***********************************************************************/
/***********************************************************************/