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 <cstdio>
int main(){
	int n;
	scanf("%d", &n);

	puts("369079022319095238497231462386986227466627595647824025448268970705817365749437436535643655236310698320375369753980186596186403480574836094493571285165535355462921002968279851476750407821328204625735802870554029582365731206033340355502102955698912133453806061854454928628513903743445339339102734627185211504270204197129839713043575666634180588792025427456097872922240703501056137506549093054903133310761320617018268693375792249295060810447162751448503681900192707980542421468731749355118528593201671252261969180560659466378206167972590272217304841286757021733845901466847237122807466058811858904773269723608673093826578098684510518921623339485719746978457751956207524096557017038536295710808864259595258763367412622990102273459590510841932991366439966970612272267103943264904336907370826206061474722510921851554002775565288807783979444872019027071766234853307071255747890340040074976426465026258067530532013260341540370907219778305512139037064199734751153674811277458424427340674347472683776740077555843268018801241932280916236159628425431841011012375905115437692094488451363166029081004707184665536185709665212108595328766252802999079515853235490413456806298056255294435044230172227839217985100451148719444581650631167978369632970396102552719251554095505229566850485508257632475070377813852108618966441308819114795398525139701741530766423519646687912658440516830536213468849231244625689758063979411717981770124469894955775595837140663689007415019323662227605921258134867899645429713485355080138263312215287797322765333803930116486460282885999442907159530703147734983636866981870513046445123963482179133586342046671402858784515445410334753152778586157432416329850524401649895475045382105438728594564441663006172167114956314593763277947082975651673328244827893076797869596974501044687701702219470281779587849255195666382891275944898853295201209076471051910242798043674033900029526373672472489360059990991333129227595839261315938918248901055172744144824179836943645131323706132202131997687031565650524841310420351190723175518603982227674184806351818320483372460743044709512301543153681348488293965354475400591253913902898286304430718702417554741194988218546591828021386646499560534154132231339882051038030436002382745855359788684398448860936422324373086035850629037024643831567352659036369243068011107495165566182310078471267288530056624891602488650089397681415440135680074745667139016234586800980579666558775345465286175718731779877135301406574791539009125550831090941024301859469164529727151586538204025625107556883490047678102384268498127109498062049025023137672798620852429130030895015059452150771296134999258397314222631234569334405214429781193450329307966896401882246255518994992448033708619110756712115302237071658172060128397428465026443011225687224677114890572043091620266922166151072304546917745995218829456846350416704210566366350008359245784126212016477392880607199886349722207761813887251009049311488784842494773225742346339279742463280451712468499049658867902225877924332060953830119045224039864435145798647174743896285554699239861060289894405945955923650954421914113715007986018210789813789784310727335743974009497101981304277026077906686184601777293620660823574044199634204160836226504996261688852587303178401760805456687463171029525064817023673562442143882891540128343465758199260674449519282006183913484830928270921356954940813366282997077377842213284604638025735261845208283998390655832002361425307478841990989108091477150888999703647442716058399103766945776336195825885824989735123817408866988436748558477530391048238895180381723687305011862546429748168882189761742992829526769181159886822034337388146984311301898612205539538374937940031817152592986037291115947880661989796257564452451549831875243637702203239437559571202497038681009815552000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002");
	for(int i = 0; i < n; ++i){
		printf("%d\n", i + 2);
	}
}