Problem: Given n, find n consecutive positive integers. However, all numbers must have divisors other than 1 and the number itself.

Hint

In Sample Output 2, 8, 9 and 10 are selected as three consecutive integers.
The second and third lines output 3, as a divisor of 9, and the fourth line outputs 5, as a divisor of 10.



Input

The input is given in the following format.


n


The input meets the following constraints.
1 ≤ n ≤ 1,500

Output

Print the smallest of the n consecutive positive integers you choose on the first line.
Output the divisor for each value from the 2nd line to the n + 1 line.
Any value may be output unless the divisor is 1 or the number itself.
Let x be the number output on the first line, and output the divisor of x + i-2 on the i line.

The output value must not exceed 5,000 digits.

Examples

Input

2


Output

8
2
3


Input

3


Output

8
2
3
5

Solution (in CPP):

Solution:
#include <iostream>
#include <sstream>
#include <string>
#include <algorithm>
#include <vector>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <cassert>

using namespace std;

#define FOR(i,k,n) for(int i=(k); i<(int)(n); ++i)
#define REP(i,n) FOR(i,0,n)
#define FORIT(i,c) for(__typeof((c).begin())i=(c).begin();i!=(c).end();++i)

template<class T> void debug(T begin, T end){ for(T i = begin; i != end; ++i) cout<<*i<<" "; cout<<endl; }
inline bool valid(int x, int y, int W, int H){ return (x >= 0 && y >= 0 && x < W && y < H); }

typedef long long ll;
const int INF = 100000000;
const double EPS = 1e-8;
const int MOD = 1000000007;
int dx[8] = {1, 0, -1, 0, 1, -1, -1, 1};
int dy[8] = {0, 1, 0, -1, 1, 1, -1, -1};
int main(){
  int n;
  while(cin>>n){
    cout<<"72228086929664420651106521304656510525340468690495933260044147676857493358690644482529638108395307511654564478438634721376272188778051867571677494303971390478873572178260066068150017356078782661241238987533757280852905172211680833294253145024943983656218695296759413733574883908589221245240568177781436209401676317319383038846775665336826901129631895822734268520475643048045127654624269933170907051010300717643313921865856559924232063151144365310173623205941144581550600924166393303087536601524168192597964476245223257921963650541646329278517143758923483173347723106601143537838642178278173829023444956089503311173073618445753532875813867598663296856739315684903609697144796703000651178486736265301118699204591404539960193266425232481989189756061431525222968596964249933088718909743192976395466479225138794875961264058160999548340208799114303226288580379230841407309752248092079394823964414350647207773176541876297915527225415606053332774814257496363798032873335209244976152460512461303281664350940362200855365279247888394988618689137490228189308203886028193659048160287400841160648403948450468224084289104098406210815195475652974251962169023042708112638505809861677431741987644306174852881103908590163278563405878077124909779054561182311006333494307156408251018799408892243760644696289136985692091001832810603200225192529800598541540207945722295290503233051371076246617801246477670491898386246813202252408238696055801835478389207343314704575384096010591055146023561280888407508720627001204634924305070472606572970589678020718487701632305423434235349344522025507212353728960218265256211160666381382943117755892517604832475893838160595865215792161003146516488403270449519393015135593822826378540820967201713148164147547345002056230263528047074622225638748140991986702608398865399049744601427157886679868872401102950407289948283733583740631688248833604906587642185488339004414826636286040142084791683914628657165348291172073808784695309880256246134288491744925129655025265419367296706858162549072808281908104196280507954405184075922579759374364259900561966724140537986243526544191866882749547587269821552286730063949533728318429778480319961104918844731005904281956601875539922218659010377799608600522248104929915980307319208535294184439117445226023638753554745329005449341219363202337799785750760984531925797938724780584079004514261157265167710941377789482520847836003702978999053067419330030050926657009667612503509983499709440743897552530545661922756217360475717714559718725057125088075068494238743382339920393013025095894842804425739450336201397753875785039432714111470079033600589280327555233527701846804008145930925677049193844332677916202467853295244150505705862489551127671077913008968771802260142300348484357305227827114586911391477996693157074154238073649552902809477871814788982767900127707865775785353421816396574616339210499369715432824846523313545412258262472457613114462278858700390438045370815099558667681904548529563967959887782439051381515093051083839971093184924699533324883864533628068255474768530563318062535686651109902881658435530198615781114249938229626930315869443959252881511510806892499353192984181283162193449665304948147353594412389485553869698454787678542400068047527214712896215908316948738319413254818031964190264213846624574815962397511747360826691373404559244514825698683380176427007758604913736911634120333325940804474215742804747345600659876724975648842313122644729082808669136782282299383057415970849029516885694841248600202581390981775107207780538202966696283718312699336922215896101871392802295957267843867101490929563927994151894788454192611564225071646925001390206647138880897340472856291016111630131201127185218000527224245229374106598067483230331626123791916818249484120815023729026712298569622439434649600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002"<<endl;
    REP(i, n) cout<<i + 2<<endl;
  }
  return 0;
}