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<bits/stdc++.h>
using namespace std;
int main(){
  int n;cin>>n;
  int i,j=0,k=0;
  cout << "108486586568355959817961994999594078809061383973124891756586309810639955024753348012759516438809751882505155846614829351507160827544633905092659596444565028499268105411746619234361326068830331557184340959275703435841063568661944611607968223827465863451640480335732639427829475630701010310351333403027717186521317828613713324347857049335914005496707107525746871317754415858163781737245653439622702390617471677900257510642516553006196558853018836695880782055323599161489002588097922741237479975489300625282142643320325333398789403113552786576332749925903071726368280106114917593833640551773817091193214324046433973381956574905521806379472429133192271878822452158725221765111484647906978070087077870482280286205296289619020210286170699187947763013604270150884898832640303399499255802434275850545990651796158469903693818615357821321606993616269683445885447729604723793779247876634303251025594550354672106075311165898199469121892574240292105827771014759538424645375749484285954180995689716877529059855112424025684758649430328369272905271084510322740340922236814346875890336751676063423293902730572603272574602234355806128644423604430767326447177872610147585183035726412239502476465441747874629027418070702425244402235628871841614488139950895831131512908449348925193030236712156150128488333826283752509520684752881526006738239179760499009393392334474887526335856043159356522419937472209461078831376142713429783117174521475814356888540589429658686272226912207907764829327389043894388078098381755809361656306215849855072601825696387119168527851722745998221494715472082311832955300898247834414829163320904837180562869350561442458378792544917214989554119825826726067765581712215178128308733661921885220568313092736973148542549616112193088457855819126706082582909399707769964027317815095829372716391343591145793163046346456631511749502322167842778428795749748074569694638562603485184631069607701632293411357109239772243062353133340454860794612355440144881693701314600877544741847948659889679653700960148707358039425972502813322947516586482035714798580295118370644074019659088055337776869376184057889820476079271971534668556052199659934281527277440581579588104785970868231498816017060963172425833587455012117984416653604733802421593451220011865027554402729487505407839227484166184910511483529911375278197642998766952548503964620437286664780420258212281901833949439802746313449677561874456577707263833705136491838828520753980271995216563579997334123900879584207979838475434528007268697525035801882288752878346592560274560430305563694034053892247460654404974499426321429129227936595428058708468085099051987960758608173899620235188250366927889154187682230136106715649456714059570205459305793761959025339471095246994733735123423504672452196326109540909999951033121925379665586621628460019835763465813052117385991817214395229600839568227655073741494170053312580102919478016945209211910233631334897922342845767986437944146964279537118858220631891405079875751449223455175035669762727927636581963756898699053975564529509358519723102332906103729928601349967074128250970166358320903233603407220899649334435904826797828030289231952534028495862240287309614561397288032117325098807409007301912287079091093170684902207385876498770116294292057004955758708736684010213776849197630111373575521062644535961690442853647985261268199422437024993365653424580432841274448740655563088320272045692730513092191134840913424561154310212383082378621043446988013673352238788215242334362313651555397504277249254626211026086368380855977818144905674404057168275945010831989048527816301488386439376205019847216145972258197302569466057613681352088090384002599107805390230149106199668457064093032197436791890816334519908110297359811958102437935459061010725149464165640998121872451572904030843699200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002"<<endl;
  for(i=2;i<=n+1;i++){
    cout << i << endl;
  }
  return 0;
}