Given the following C code and unoptimized assembly code, your task is to generate highly optimized x86-64 assembly code.
C Code:

```c
#include <stdio.h>
char *n1501 = "72228086929664420651106521304656510525340468690495933260044147676857493358690644482529638108395307511654564478438634721376272188778051867571677494303971390478873572178260066068150017356078782661241238987533757280852905172211680833294253145024943983656218695296759413733574883908589221245240568177781436209401676317319383038846775665336826901129631895822734268520475643048045127654624269933170907051010300717643313921865856559924232063151144365310173623205941144581550600924166393303087536601524168192597964476245223257921963650541646329278517143758923483173347723106601143537838642178278173829023444956089503311173073618445753532875813867598663296856739315684903609697144796703000651178486736265301118699204591404539960193266425232481989189756061431525222968596964249933088718909743192976395466479225138794875961264058160999548340208799114303226288580379230841407309752248092079394823964414350647207773176541876297915527225415606053332774814257496363798032873335209244976152460512461303281664350940362200855365279247888394988618689137490228189308203886028193659048160287400841160648403948450468224084289104098406210815195475652974251962169023042708112638505809861677431741987644306174852881103908590163278563405878077124909779054561182311006333494307156408251018799408892243760644696289136985692091001832810603200225192529800598541540207945722295290503233051371076246617801246477670491898386246813202252408238696055801835478389207343314704575384096010591055146023561280888407508720627001204634924305070472606572970589678020718487701632305423434235349344522025507212353728960218265256211160666381382943117755892517604832475893838160595865215792161003146516488403270449519393015135593822826378540820967201713148164147547345002056230263528047074622225638748140991986702608398865399049744601427157886679868872401102950407289948283733583740631688248833604906587642185488339004414826636286040142084791683914628657165348291172073808784695309880256246134288491744925129655025265419367296706858162549072808281908104196280507954405184075922579759374364259900561966724140537986243526544191866882749547587269821552286730063949533728318429778480319961104918844731005904281956601875539922218659010377799608600522248104929915980307319208535294184439117445226023638753554745329005449341219363202337799785750760984531925797938724780584079004514261157265167710941377789482520847836003702978999053067419330030050926657009667612503509983499709440743897552530545661922756217360475717714559718725057125088075068494238743382339920393013025095894842804425739450336201397753875785039432714111470079033600589280327555233527701846804008145930925677049193844332677916202467853295244150505705862489551127671077913008968771802260142300348484357305227827114586911391477996693157074154238073649552902809477871814788982767900127707865775785353421816396574616339210499369715432824846523313545412258262472457613114462278858700390438045370815099558667681904548529563967959887782439051381515093051083839971093184924699533324883864533628068255474768530563318062535686651109902881658435530198615781114249938229626930315869443959252881511510806892499353192984181283162193449665304948147353594412389485553869698454787678542400068047527214712896215908316948738319413254818031964190264213846624574815962397511747360826691373404559244514825698683380176427007758604913736911634120333325940804474215742804747345600659876724975648842313122644729082808669136782282299383057415970849029516885694841248600202581390981775107207780538202966696283718312699336922215896101871392802295957267843867101490929563927994151894788454192611564225071646925001390206647138880897340472856291016111630131201127185218000527224245229374106598067483230331626123791916818249484120815023729026712298569622439434649600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002";

int main(){
  int n;
  scanf("%d", &n);
  puts(n1501);
  int i;
  for(i=1;i<=n;i++){
    printf("%d\n", i+1);
  }
  return 0;
}```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.globl	n1501
	.section	.rodata
	.align 8
.LC0:
	.ascii	"722280869296644206511065213046565105253404686904959332600441"
	.ascii	"476768574933586906444825296381083953075116545644784386347213"
	.ascii	"762721887780518675716774943039713904788735721782600660681500"
	.ascii	"173560787826612412389875337572808529051722116808332942531450"
	.ascii	"249439836562186952967594137335748839085892212452405681777814"
	.ascii	"362094016763173193830388467756653368269011296318958227342685"
	.ascii	"204756430480451276546242699331709070510103007176433139218658"
	.ascii	"565599242320631511443653101736232059411445815506009241663933"
	.ascii	"030875366015241681925979644762452232579219636505416463292785"
	.ascii	"171437589234831733477231066011435378386421782781738290234449"
	.ascii	"560895033111730736184457535328758138675986632968567393156849"
	.ascii	"036096971447967030006511784867362653011186992045914045399601"
	.ascii	"932664252324819891897560614315252229685969642499330887189097"
	.ascii	"431929763954664792251387948759612640581609995483402087991143"
	.ascii	"032262885803792308414073097522480920793948239644143506472077"
	.ascii	"731765418762979155272254156060533327748142574963637980328733"
	.ascii	"352092449761524605124613032816643509403622008553652792478883"
	.ascii	"949886186891374902281893082038860281936590481602874008411606"
	.ascii	"484039484504682240842891040984062108151954756529742519621690"
	.ascii	"230427081126385058098616774317419876443061748528811039085901"
	.ascii	"632785634058780771249097790545611823110063334943071564082510"
	.ascii	"187994088922437606446962891369856920910018328106032002251925"
	.ascii	"298005985415402079457222952905032330513710762466178012464776"
	.ascii	"704918983862468132022524082386960558018354783892073433147045"
	.ascii	"753840960105910551460235612808884075087206270012046349243050"
	.ascii	"704726065729705896780207184877016323054234342353493445220255"
	.ascii	"072123537289602182652562111606663813829431177558925176048324"
	.ascii	"758938381605958652157921610031465164884032704495193930151355"
	.ascii	"938228263785408209672017131481641475473450020562302635280470"
	.ascii	"746222256387481409919867026083988653990497446014271578866798"
	.ascii	"688724011029504072899482837335837406316882488336049065876421"
	.ascii	"854883390044148266362860401420847916839146286571653482911720"
	.ascii	"738087846953098802562461342884917449251296550252654193672967"
	.ascii	"06858162549072808281"
	.ascii	"908104196280507954405184075922579759374364259900561966724140"
	.ascii	"537986243526544191866882749547587269821552286730063949533728"
	.ascii	"318429778480319961104918844731005904281956601875539922218659"
	.ascii	"010377799608600522248104929915980307319208535294184439117445"
	.ascii	"226023638753554745329005449341219363202337799785750760984531"
	.ascii	"925797938724780584079004514261157265167710941377789482520847"
	.ascii	"836003702978999053067419330030050926657009667612503509983499"
	.ascii	"709440743897552530545661922756217360475717714559718725057125"
	.ascii	"088075068494238743382339920393013025095894842804425739450336"
	.ascii	"201397753875785039432714111470079033600589280327555233527701"
	.ascii	"846804008145930925677049193844332677916202467853295244150505"
	.ascii	"705862489551127671077913008968771802260142300348484357305227"
	.ascii	"827114586911391477996693157074154238073649552902809477871814"
	.ascii	"788982767900127707865775785353421816396574616339210499369715"
	.ascii	"432824846523313545412258262472457613114462278858700390438045"
	.ascii	"370815099558667681904548529563967959887782439051381515093051"
	.ascii	"083839971093184924699533324883864533628068255474768530563318"
	.ascii	"062535686651109902881658435530198615781114249938229626930315"
	.ascii	"869443959252881511510806892499353192984181283162193449665304"
	.ascii	"948147353594412389485553869698454787678542400068047527214712"
	.ascii	"896215908316948738319413254818031964190264213846624574815962"
	.ascii	"397511747360826691373404559244514825698683380176427007758604"
	.ascii	"913736911634120333325940804474215742804747345600659876724975"
	.ascii	"648842313122644729082808669136782282299383057415970849029516"
	.ascii	"885694841248600202581390981775107207780538202966696283718312"
	.ascii	"699336922215896101871392802295957267843867101490929563927994"
	.ascii	"151894788454192611564225071646925001390206647138880897340472"
	.ascii	"856291016111630131201127185218000527224245229374106598067483"
	.ascii	"230331626123791916818249484120815023729026712298569622439434"
	.ascii	"649600000000000000000000000000000000000000000000000000000000"
	.ascii	"000000000000000000000000000000000000000000000000000000000000"
	.ascii	"000000000000000000000000000000000000000000000000000000000000"
	.ascii	"000000000000000000000000000000000000000000000000000000000000"
	.ascii	"00000000000000000000"
	.string	"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002"
	.section	.data.rel.local,"aw"
	.align 8
	.type	n1501, @object
	.size	n1501, 8
n1501:
	.quad	.LC0
	.section	.rodata
.LC1:
	.string	"%d"
.LC2:
	.string	"%d\n"
	.text
	.globl	main
	.type	main, @function
main:
.LFB0:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$16, %rsp
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
	leaq	-16(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	movq	n1501(%rip), %rax
	movq	%rax, %rdi
	call	puts@PLT
	movl	$1, -12(%rbp)
	jmp	.L2
.L3:
	movl	-12(%rbp), %eax
	addl	$1, %eax
	movl	%eax, %esi
	leaq	.LC2(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	printf@PLT
	addl	$1, -12(%rbp)
.L2:
	movl	-16(%rbp), %eax
	cmpl	%eax, -12(%rbp)
	jle	.L3
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L5
	call	__stack_chk_fail@PLT
.L5:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.size	main, .-main
	.ident	"GCC: (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	1f - 0f
	.long	4f - 1f
	.long	5
0:
	.string	"GNU"
1:
	.align 8
	.long	0xc0000002
	.long	3f - 2f
2:
	.long	0x3
3:
	.align 8
4:
```

Only output the optimized assembly code. Do not include any other text. Do not write any comments in the assembly code. Wrap the assembly code in ```assembly``` tags.
user
	.file	"temp.c"
	.text
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"%d"
.LC1:
	.string	"%d\n"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB23:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	leaq	.LC0(%rip), %rdi
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	subq	$24, %rsp
	.cfi_def_cfa_offset 48
	movq	%fs:40, %rax
	movq	%rax, 8(%rsp)
	xorl	%eax, %eax
	leaq	4(%rsp), %rsi
	call	__isoc99_scanf@PLT
	movq	n1501(%rip), %rdi
	call	puts@PLT
	movl	4(%rsp), %eax
	testl	%eax, %eax
	jle	.L2
	movl	$1, %ebx
	leaq	.LC1(%rip), %rbp
	.p2align 4,,10
	.p2align 3
.L3:
	addl	$1, %ebx
	xorl	%eax, %eax
	movq	%rbp, %rsi
	movl	$1, %edi
	movl	%ebx, %edx
	call	__printf_chk@PLT
	cmpl	4(%rsp), %ebx
	jle	.L3
.L2:
	movq	8(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L8
	addq	$24, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 24
	xorl	%eax, %eax
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
.L8:
	.cfi_restore_state
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE23:
	.size	main, .-main
	.globl	n1501
	.section	.rodata.str1.8,"aMS",@progbits,1
	.align 8
.LC2:
	.ascii	"722280869296644206511065213046565105253404686904959332600441"
	.ascii	"476768574933586906444825296381083953075116545644784386347213"
	.ascii	"762721887780518675716774943039713904788735721782600660681500"
	.ascii	"173560787826612412389875337572808529051722116808332942531450"
	.ascii	"249439836562186952967594137335748839085892212452405681777814"
	.ascii	"362094016763173193830388467756653368269011296318958227342685"
	.ascii	"204756430480451276546242699331709070510103007176433139218658"
	.ascii	"565599242320631511443653101736232059411445815506009241663933"
	.ascii	"030875366015241681925979644762452232579219636505416463292785"
	.ascii	"171437589234831733477231066011435378386421782781738290234449"
	.ascii	"560895033111730736184457535328758138675986632968567393156849"
	.ascii	"036096971447967030006511784867362653011186992045914045399601"
	.ascii	"932664252324819891897560614315252229685969642499330887189097"
	.ascii	"431929763954664792251387948759612640581609995483402087991143"
	.ascii	"032262885803792308414073097522480920793948239644143506472077"
	.ascii	"731765418762979155272254156060533327748142574963637980328733"
	.ascii	"352092449761524605124613032816643509403622008553652792478883"
	.ascii	"949886186891374902281893082038860281936590481602874008411606"
	.ascii	"484039484504682240842891040984062108151954756529742519621690"
	.ascii	"230427081126385058098616774317419876443061748528811039085901"
	.ascii	"632785634058780771249097790545611823110063334943071564082510"
	.ascii	"187994088922437606446962891369856920910018328106032002251925"
	.ascii	"298005985415402079457222952905032330513710762466178012464776"
	.ascii	"704918983862468132022524082386960558018354783892073433147045"
	.ascii	"753840960105910551460235612808884075087206270012046349243050"
	.ascii	"704726065729705896780207184877016323054234342353493445220255"
	.ascii	"072123537289602182652562111606663813829431177558925176048324"
	.ascii	"758938381605958652157921610031465164884032704495193930151355"
	.ascii	"938228263785408209672017131481641475473450020562302635280470"
	.ascii	"746222256387481409919867026083988653990497446014271578866798"
	.ascii	"688724011029504072899482837335837406316882488336049065876421"
	.ascii	"854883390044148266362860401420847916839146286571653482911720"
	.ascii	"738087846953098802562461342884917449251296550252654193672967"
	.ascii	"06858162549072808281"
	.ascii	"908104196280507954405184075922579759374364259900561966724140"
	.ascii	"537986243526544191866882749547587269821552286730063949533728"
	.ascii	"318429778480319961104918844731005904281956601875539922218659"
	.ascii	"010377799608600522248104929915980307319208535294184439117445"
	.ascii	"226023638753554745329005449341219363202337799785750760984531"
	.ascii	"925797938724780584079004514261157265167710941377789482520847"
	.ascii	"836003702978999053067419330030050926657009667612503509983499"
	.ascii	"709440743897552530545661922756217360475717714559718725057125"
	.ascii	"088075068494238743382339920393013025095894842804425739450336"
	.ascii	"201397753875785039432714111470079033600589280327555233527701"
	.ascii	"846804008145930925677049193844332677916202467853295244150505"
	.ascii	"705862489551127671077913008968771802260142300348484357305227"
	.ascii	"827114586911391477996693157074154238073649552902809477871814"
	.ascii	"788982767900127707865775785353421816396574616339210499369715"
	.ascii	"432824846523313545412258262472457613114462278858700390438045"
	.ascii	"370815099558667681904548529563967959887782439051381515093051"
	.ascii	"083839971093184924699533324883864533628068255474768530563318"
	.ascii	"062535686651109902881658435530198615781114249938229626930315"
	.ascii	"869443959252881511510806892499353192984181283162193449665304"
	.ascii	"948147353594412389485553869698454787678542400068047527214712"
	.ascii	"896215908316948738319413254818031964190264213846624574815962"
	.ascii	"397511747360826691373404559244514825698683380176427007758604"
	.ascii	"913736911634120333325940804474215742804747345600659876724975"
	.ascii	"648842313122644729082808669136782282299383057415970849029516"
	.ascii	"885694841248600202581390981775107207780538202966696283718312"
	.ascii	"699336922215896101871392802295957267843867101490929563927994"
	.ascii	"151894788454192611564225071646925001390206647138880897340472"
	.ascii	"856291016111630131201127185218000527224245229374106598067483"
	.ascii	"230331626123791916818249484120815023729026712298569622439434"
	.ascii	"649600000000000000000000000000000000000000000000000000000000"
	.ascii	"000000000000000000000000000000000000000000000000000000000000"
	.ascii	"000000000000000000000000000000000000000000000000000000000000"
	.ascii	"000000000000000000000000000000000000000000000000000000000000"
	.ascii	"00000000000000000000"
	.string	"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002"
	.section	.data.rel.local,"aw"
	.align 8
	.type	n1501, @object
	.size	n1501, 8
n1501:
	.quad	.LC2
	.ident	"GCC: (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	1f - 0f
	.long	4f - 1f
	.long	5
0:
	.string	"GNU"
1:
	.align 8
	.long	0xc0000002
	.long	3f - 2f
2:
	.long	0x3
3:
	.align 8
4:

rule
	.file	"temp.c"
	.text
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"%d"
.LC1:
	.string	"%d\n"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB23:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	leaq	.LC0(%rip), %rdi
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	subq	$24, %rsp
	.cfi_def_cfa_offset 48
	movq	%fs:40, %rax
	movq	%rax, 8(%rsp)
	xorl	%eax, %eax
	leaq	4(%rsp), %rsi
	call	__isoc99_scanf@PLT
	movq	n1501(%rip), %rdi
	call	puts@PLT
	movl	4(%rsp), %eax
	testl	%eax, %eax
	jle	.L2
	movl	$1, %ebx
	leaq	.LC1(%rip), %rbp
	.p2align 4,,10
	.p2align 3
.L3:
	addl	$1, %ebx
	xorl	%eax, %eax
	movq	%rbp, %rsi
	movl	$1, %edi
	movl	%ebx, %edx
	call	__printf_chk@PLT
	cmpl	4(%rsp), %ebx
	jle	.L3
.L2:
	movq	8(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L8
	addq	$24, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 24
	xorl	%eax, %eax
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
.L8:
	.cfi_restore_state
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE23:
	.size	main, .-main
	.globl	n1501
	.section	.rodata.str1.8,"aMS",@progbits,1
	.align 8
.LC2:
	.ascii	"722280869296644206511065213046565105253404686904959332600441"
	.ascii	"476768574933586906444825296381083953075116545644784386347213"
	.ascii	"762721887780518675716774943039713904788735721782600660681500"
	.ascii	"173560787826612412389875337572808529051722116808332942531450"
	.ascii	"249439836562186952967594137335748839085892212452405681777814"
	.ascii	"362094016763173193830388467756653368269011296318958227342685"
	.ascii	"204756430480451276546242699331709070510103007176433139218658"
	.ascii	"565599242320631511443653101736232059411445815506009241663933"
	.ascii	"030875366015241681925979644762452232579219636505416463292785"
	.ascii	"171437589234831733477231066011435378386421782781738290234449"
	.ascii	"560895033111730736184457535328758138675986632968567393156849"
	.ascii	"036096971447967030006511784867362653011186992045914045399601"
	.ascii	"932664252324819891897560614315252229685969642499330887189097"
	.ascii	"431929763954664792251387948759612640581609995483402087991143"
	.ascii	"032262885803792308414073097522480920793948239644143506472077"
	.ascii	"731765418762979155272254156060533327748142574963637980328733"
	.ascii	"352092449761524605124613032816643509403622008553652792478883"
	.ascii	"949886186891374902281893082038860281936590481602874008411606"
	.ascii	"484039484504682240842891040984062108151954756529742519621690"
	.ascii	"230427081126385058098616774317419876443061748528811039085901"
	.ascii	"632785634058780771249097790545611823110063334943071564082510"
	.ascii	"187994088922437606446962891369856920910018328106032002251925"
	.ascii	"298005985415402079457222952905032330513710762466178012464776"
	.ascii	"704918983862468132022524082386960558018354783892073433147045"
	.ascii	"753840960105910551460235612808884075087206270012046349243050"
	.ascii	"704726065729705896780207184877016323054234342353493445220255"
	.ascii	"072123537289602182652562111606663813829431177558925176048324"
	.ascii	"758938381605958652157921610031465164884032704495193930151355"
	.ascii	"938228263785408209672017131481641475473450020562302635280470"
	.ascii	"746222256387481409919867026083988653990497446014271578866798"
	.ascii	"688724011029504072899482837335837406316882488336049065876421"
	.ascii	"854883390044148266362860401420847916839146286571653482911720"
	.ascii	"738087846953098802562461342884917449251296550252654193672967"
	.ascii	"06858162549072808281"
	.ascii	"908104196280507954405184075922579759374364259900561966724140"
	.ascii	"537986243526544191866882749547587269821552286730063949533728"
	.ascii	"318429778480319961104918844731005904281956601875539922218659"
	.ascii	"010377799608600522248104929915980307319208535294184439117445"
	.ascii	"226023638753554745329005449341219363202337799785750760984531"
	.ascii	"925797938724780584079004514261157265167710941377789482520847"
	.ascii	"836003702978999053067419330030050926657009667612503509983499"
	.ascii	"709440743897552530545661922756217360475717714559718725057125"
	.ascii	"088075068494238743382339920393013025095894842804425739450336"
	.ascii	"201397753875785039432714111470079033600589280327555233527701"
	.ascii	"846804008145930925677049193844332677916202467853295244150505"
	.ascii	"705862489551127671077913008968771802260142300348484357305227"
	.ascii	"827114586911391477996693157074154238073649552902809477871814"
	.ascii	"788982767900127707865775785353421816396574616339210499369715"
	.ascii	"432824846523313545412258262472457613114462278858700390438045"
	.ascii	"370815099558667681904548529563967959887782439051381515093051"
	.ascii	"083839971093184924699533324883864533628068255474768530563318"
	.ascii	"062535686651109902881658435530198615781114249938229626930315"
	.ascii	"869443959252881511510806892499353192984181283162193449665304"
	.ascii	"948147353594412389485553869698454787678542400068047527214712"
	.ascii	"896215908316948738319413254818031964190264213846624574815962"
	.ascii	"397511747360826691373404559244514825698683380176427007758604"
	.ascii	"913736911634120333325940804474215742804747345600659876724975"
	.ascii	"648842313122644729082808669136782282299383057415970849029516"
	.ascii	"885694841248600202581390981775107207780538202966696283718312"
	.ascii	"699336922215896101871392802295957267843867101490929563927994"
	.ascii	"151894788454192611564225071646925001390206647138880897340472"
	.ascii	"856291016111630131201127185218000527224245229374106598067483"
	.ascii	"230331626123791916818249484120815023729026712298569622439434"
	.ascii	"649600000000000000000000000000000000000000000000000000000000"
	.ascii	"000000000000000000000000000000000000000000000000000000000000"
	.ascii	"000000000000000000000000000000000000000000000000000000000000"
	.ascii	"000000000000000000000000000000000000000000000000000000000000"
	.ascii	"00000000000000000000"
	.string	"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002"
	.section	.data.rel.local,"aw"
	.align 8
	.type	n1501, @object
	.size	n1501, 8
n1501:
	.quad	.LC2
	.ident	"GCC: (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	1f - 0f
	.long	4f - 1f
	.long	5
0:
	.string	"GNU"
1:
	.align 8
	.long	0xc0000002
	.long	3f - 2f
2:
	.long	0x3
3:
	.align 8
4:

#include <stdio.h>
char *n1501 = "72228086929664420651106521304656510525340468690495933260044147676857493358690644482529638108395307511654564478438634721376272188778051867571677494303971390478873572178260066068150017356078782661241238987533757280852905172211680833294253145024943983656218695296759413733574883908589221245240568177781436209401676317319383038846775665336826901129631895822734268520475643048045127654624269933170907051010300717643313921865856559924232063151144365310173623205941144581550600924166393303087536601524168192597964476245223257921963650541646329278517143758923483173347723106601143537838642178278173829023444956089503311173073618445753532875813867598663296856739315684903609697144796703000651178486736265301118699204591404539960193266425232481989189756061431525222968596964249933088718909743192976395466479225138794875961264058160999548340208799114303226288580379230841407309752248092079394823964414350647207773176541876297915527225415606053332774814257496363798032873335209244976152460512461303281664350940362200855365279247888394988618689137490228189308203886028193659048160287400841160648403948450468224084289104098406210815195475652974251962169023042708112638505809861677431741987644306174852881103908590163278563405878077124909779054561182311006333494307156408251018799408892243760644696289136985692091001832810603200225192529800598541540207945722295290503233051371076246617801246477670491898386246813202252408238696055801835478389207343314704575384096010591055146023561280888407508720627001204634924305070472606572970589678020718487701632305423434235349344522025507212353728960218265256211160666381382943117755892517604832475893838160595865215792161003146516488403270449519393015135593822826378540820967201713148164147547345002056230263528047074622225638748140991986702608398865399049744601427157886679868872401102950407289948283733583740631688248833604906587642185488339004414826636286040142084791683914628657165348291172073808784695309880256246134288491744925129655025265419367296706858162549072808281908104196280507954405184075922579759374364259900561966724140537986243526544191866882749547587269821552286730063949533728318429778480319961104918844731005904281956601875539922218659010377799608600522248104929915980307319208535294184439117445226023638753554745329005449341219363202337799785750760984531925797938724780584079004514261157265167710941377789482520847836003702978999053067419330030050926657009667612503509983499709440743897552530545661922756217360475717714559718725057125088075068494238743382339920393013025095894842804425739450336201397753875785039432714111470079033600589280327555233527701846804008145930925677049193844332677916202467853295244150505705862489551127671077913008968771802260142300348484357305227827114586911391477996693157074154238073649552902809477871814788982767900127707865775785353421816396574616339210499369715432824846523313545412258262472457613114462278858700390438045370815099558667681904548529563967959887782439051381515093051083839971093184924699533324883864533628068255474768530563318062535686651109902881658435530198615781114249938229626930315869443959252881511510806892499353192984181283162193449665304948147353594412389485553869698454787678542400068047527214712896215908316948738319413254818031964190264213846624574815962397511747360826691373404559244514825698683380176427007758604913736911634120333325940804474215742804747345600659876724975648842313122644729082808669136782282299383057415970849029516885694841248600202581390981775107207780538202966696283718312699336922215896101871392802295957267843867101490929563927994151894788454192611564225071646925001390206647138880897340472856291016111630131201127185218000527224245229374106598067483230331626123791916818249484120815023729026712298569622439434649600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002";

int main(){
  int n;
  scanf("%d", &n);
  puts(n1501);
  int i;
  for(i=1;i<=n;i++){
    printf("%d\n", i+1);
  }
  return 0;
}
6
 4
 1
 8
 0
 11
 18
 16
 5
 13

72228086929664420651106521304656510525340468690495933260044147676857493358690644482529638108395307511654564478438634721376272188778051867571677494303971390478873572178260066068150017356078782661241238987533757280852905172211680833294253145024943983656218695296759413733574883908589221245240568177781436209401676317319383038846775665336826901129631895822734268520475643048045127654624269933170907051010300717643313921865856559924232063151144365310173623205941144581550600924166393303087536601524168192597964476245223257921963650541646329278517143758923483173347723106601143537838642178278173829023444956089503311173073618445753532875813867598663296856739315684903609697144796703000651178486736265301118699204591404539960193266425232481989189756061431525222968596964249933088718909743192976395466479225138794875961264058160999548340208799114303226288580379230841407309752248092079394823964414350647207773176541876297915527225415606053332774814257496363798032873335209244976152460512461303281664350940362200855365279247888394988618689137490228189308203886028193659048160287400841160648403948450468224084289104098406210815195475652974251962169023042708112638505809861677431741987644306174852881103908590163278563405878077124909779054561182311006333494307156408251018799408892243760644696289136985692091001832810603200225192529800598541540207945722295290503233051371076246617801246477670491898386246813202252408238696055801835478389207343314704575384096010591055146023561280888407508720627001204634924305070472606572970589678020718487701632305423434235349344522025507212353728960218265256211160666381382943117755892517604832475893838160595865215792161003146516488403270449519393015135593822826378540820967201713148164147547345002056230263528047074622225638748140991986702608398865399049744601427157886679868872401102950407289948283733583740631688248833604906587642185488339004414826636286040142084791683914628657165348291172073808784695309880256246134288491744925129655025265419367296706858162549072808281908104196280507954405184075922579759374364259900561966724140537986243526544191866882749547587269821552286730063949533728318429778480319961104918844731005904281956601875539922218659010377799608600522248104929915980307319208535294184439117445226023638753554745329005449341219363202337799785750760984531925797938724780584079004514261157265167710941377789482520847836003702978999053067419330030050926657009667612503509983499709440743897552530545661922756217360475717714559718725057125088075068494238743382339920393013025095894842804425739450336201397753875785039432714111470079033600589280327555233527701846804008145930925677049193844332677916202467853295244150505705862489551127671077913008968771802260142300348484357305227827114586911391477996693157074154238073649552902809477871814788982767900127707865775785353421816396574616339210499369715432824846523313545412258262472457613114462278858700390438045370815099558667681904548529563967959887782439051381515093051083839971093184924699533324883864533628068255474768530563318062535686651109902881658435530198615781114249938229626930315869443959252881511510806892499353192984181283162193449665304948147353594412389485553869698454787678542400068047527214712896215908316948738319413254818031964190264213846624574815962397511747360826691373404559244514825698683380176427007758604913736911634120333325940804474215742804747345600659876724975648842313122644729082808669136782282299383057415970849029516885694841248600202581390981775107207780538202966696283718312699336922215896101871392802295957267843867101490929563927994151894788454192611564225071646925001390206647138880897340472856291016111630131201127185218000527224245229374106598067483230331626123791916818249484120815023729026712298569622439434649600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002
2
3
4
5
6
7
 72228086929664420651106521304656510525340468690495933260044147676857493358690644482529638108395307511654564478438634721376272188778051867571677494303971390478873572178260066068150017356078782661241238987533757280852905172211680833294253145024943983656218695296759413733574883908589221245240568177781436209401676317319383038846775665336826901129631895822734268520475643048045127654624269933170907051010300717643313921865856559924232063151144365310173623205941144581550600924166393303087536601524168192597964476245223257921963650541646329278517143758923483173347723106601143537838642178278173829023444956089503311173073618445753532875813867598663296856739315684903609697144796703000651178486736265301118699204591404539960193266425232481989189756061431525222968596964249933088718909743192976395466479225138794875961264058160999548340208799114303226288580379230841407309752248092079394823964414350647207773176541876297915527225415606053332774814257496363798032873335209244976152460512461303281664350940362200855365279247888394988618689137490228189308203886028193659048160287400841160648403948450468224084289104098406210815195475652974251962169023042708112638505809861677431741987644306174852881103908590163278563405878077124909779054561182311006333494307156408251018799408892243760644696289136985692091001832810603200225192529800598541540207945722295290503233051371076246617801246477670491898386246813202252408238696055801835478389207343314704575384096010591055146023561280888407508720627001204634924305070472606572970589678020718487701632305423434235349344522025507212353728960218265256211160666381382943117755892517604832475893838160595865215792161003146516488403270449519393015135593822826378540820967201713148164147547345002056230263528047074622225638748140991986702608398865399049744601427157886679868872401102950407289948283733583740631688248833604906587642185488339004414826636286040142084791683914628657165348291172073808784695309880256246134288491744925129655025265419367296706858162549072808281908104196280507954405184075922579759374364259900561966724140537986243526544191866882749547587269821552286730063949533728318429778480319961104918844731005904281956601875539922218659010377799608600522248104929915980307319208535294184439117445226023638753554745329005449341219363202337799785750760984531925797938724780584079004514261157265167710941377789482520847836003702978999053067419330030050926657009667612503509983499709440743897552530545661922756217360475717714559718725057125088075068494238743382339920393013025095894842804425739450336201397753875785039432714111470079033600589280327555233527701846804008145930925677049193844332677916202467853295244150505705862489551127671077913008968771802260142300348484357305227827114586911391477996693157074154238073649552902809477871814788982767900127707865775785353421816396574616339210499369715432824846523313545412258262472457613114462278858700390438045370815099558667681904548529563967959887782439051381515093051083839971093184924699533324883864533628068255474768530563318062535686651109902881658435530198615781114249938229626930315869443959252881511510806892499353192984181283162193449665304948147353594412389485553869698454787678542400068047527214712896215908316948738319413254818031964190264213846624574815962397511747360826691373404559244514825698683380176427007758604913736911634120333325940804474215742804747345600659876724975648842313122644729082808669136782282299383057415970849029516885694841248600202581390981775107207780538202966696283718312699336922215896101871392802295957267843867101490929563927994151894788454192611564225071646925001390206647138880897340472856291016111630131201127185218000527224245229374106598067483230331626123791916818249484120815023729026712298569622439434649600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002
2
3
4
5
 72228086929664420651106521304656510525340468690495933260044147676857493358690644482529638108395307511654564478438634721376272188778051867571677494303971390478873572178260066068150017356078782661241238987533757280852905172211680833294253145024943983656218695296759413733574883908589221245240568177781436209401676317319383038846775665336826901129631895822734268520475643048045127654624269933170907051010300717643313921865856559924232063151144365310173623205941144581550600924166393303087536601524168192597964476245223257921963650541646329278517143758923483173347723106601143537838642178278173829023444956089503311173073618445753532875813867598663296856739315684903609697144796703000651178486736265301118699204591404539960193266425232481989189756061431525222968596964249933088718909743192976395466479225138794875961264058160999548340208799114303226288580379230841407309752248092079394823964414350647207773176541876297915527225415606053332774814257496363798032873335209244976152460512461303281664350940362200855365279247888394988618689137490228189308203886028193659048160287400841160648403948450468224084289104098406210815195475652974251962169023042708112638505809861677431741987644306174852881103908590163278563405878077124909779054561182311006333494307156408251018799408892243760644696289136985692091001832810603200225192529800598541540207945722295290503233051371076246617801246477670491898386246813202252408238696055801835478389207343314704575384096010591055146023561280888407508720627001204634924305070472606572970589678020718487701632305423434235349344522025507212353728960218265256211160666381382943117755892517604832475893838160595865215792161003146516488403270449519393015135593822826378540820967201713148164147547345002056230263528047074622225638748140991986702608398865399049744601427157886679868872401102950407289948283733583740631688248833604906587642185488339004414826636286040142084791683914628657165348291172073808784695309880256246134288491744925129655025265419367296706858162549072808281908104196280507954405184075922579759374364259900561966724140537986243526544191866882749547587269821552286730063949533728318429778480319961104918844731005904281956601875539922218659010377799608600522248104929915980307319208535294184439117445226023638753554745329005449341219363202337799785750760984531925797938724780584079004514261157265167710941377789482520847836003702978999053067419330030050926657009667612503509983499709440743897552530545661922756217360475717714559718725057125088075068494238743382339920393013025095894842804425739450336201397753875785039432714111470079033600589280327555233527701846804008145930925677049193844332677916202467853295244150505705862489551127671077913008968771802260142300348484357305227827114586911391477996693157074154238073649552902809477871814788982767900127707865775785353421816396574616339210499369715432824846523313545412258262472457613114462278858700390438045370815099558667681904548529563967959887782439051381515093051083839971093184924699533324883864533628068255474768530563318062535686651109902881658435530198615781114249938229626930315869443959252881511510806892499353192984181283162193449665304948147353594412389485553869698454787678542400068047527214712896215908316948738319413254818031964190264213846624574815962397511747360826691373404559244514825698683380176427007758604913736911634120333325940804474215742804747345600659876724975648842313122644729082808669136782282299383057415970849029516885694841248600202581390981775107207780538202966696283718312699336922215896101871392802295957267843867101490929563927994151894788454192611564225071646925001390206647138880897340472856291016111630131201127185218000527224245229374106598067483230331626123791916818249484120815023729026712298569622439434649600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002
2
 72228086929664420651106521304656510525340468690495933260044147676857493358690644482529638108395307511654564478438634721376272188778051867571677494303971390478873572178260066068150017356078782661241238987533757280852905172211680833294253145024943983656218695296759413733574883908589221245240568177781436209401676317319383038846775665336826901129631895822734268520475643048045127654624269933170907051010300717643313921865856559924232063151144365310173623205941144581550600924166393303087536601524168192597964476245223257921963650541646329278517143758923483173347723106601143537838642178278173829023444956089503311173073618445753532875813867598663296856739315684903609697144796703000651178486736265301118699204591404539960193266425232481989189756061431525222968596964249933088718909743192976395466479225138794875961264058160999548340208799114303226288580379230841407309752248092079394823964414350647207773176541876297915527225415606053332774814257496363798032873335209244976152460512461303281664350940362200855365279247888394988618689137490228189308203886028193659048160287400841160648403948450468224084289104098406210815195475652974251962169023042708112638505809861677431741987644306174852881103908590163278563405878077124909779054561182311006333494307156408251018799408892243760644696289136985692091001832810603200225192529800598541540207945722295290503233051371076246617801246477670491898386246813202252408238696055801835478389207343314704575384096010591055146023561280888407508720627001204634924305070472606572970589678020718487701632305423434235349344522025507212353728960218265256211160666381382943117755892517604832475893838160595865215792161003146516488403270449519393015135593822826378540820967201713148164147547345002056230263528047074622225638748140991986702608398865399049744601427157886679868872401102950407289948283733583740631688248833604906587642185488339004414826636286040142084791683914628657165348291172073808784695309880256246134288491744925129655025265419367296706858162549072808281908104196280507954405184075922579759374364259900561966724140537986243526544191866882749547587269821552286730063949533728318429778480319961104918844731005904281956601875539922218659010377799608600522248104929915980307319208535294184439117445226023638753554745329005449341219363202337799785750760984531925797938724780584079004514261157265167710941377789482520847836003702978999053067419330030050926657009667612503509983499709440743897552530545661922756217360475717714559718725057125088075068494238743382339920393013025095894842804425739450336201397753875785039432714111470079033600589280327555233527701846804008145930925677049193844332677916202467853295244150505705862489551127671077913008968771802260142300348484357305227827114586911391477996693157074154238073649552902809477871814788982767900127707865775785353421816396574616339210499369715432824846523313545412258262472457613114462278858700390438045370815099558667681904548529563967959887782439051381515093051083839971093184924699533324883864533628068255474768530563318062535686651109902881658435530198615781114249938229626930315869443959252881511510806892499353192984181283162193449665304948147353594412389485553869698454787678542400068047527214712896215908316948738319413254818031964190264213846624574815962397511747360826691373404559244514825698683380176427007758604913736911634120333325940804474215742804747345600659876724975648842313122644729082808669136782282299383057415970849029516885694841248600202581390981775107207780538202966696283718312699336922215896101871392802295957267843867101490929563927994151894788454192611564225071646925001390206647138880897340472856291016111630131201127185218000527224245229374106598067483230331626123791916818249484120815023729026712298569622439434649600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002
2
3
4
5
6
7
8
9
 72228086929664420651106521304656510525340468690495933260044147676857493358690644482529638108395307511654564478438634721376272188778051867571677494303971390478873572178260066068150017356078782661241238987533757280852905172211680833294253145024943983656218695296759413733574883908589221245240568177781436209401676317319383038846775665336826901129631895822734268520475643048045127654624269933170907051010300717643313921865856559924232063151144365310173623205941144581550600924166393303087536601524168192597964476245223257921963650541646329278517143758923483173347723106601143537838642178278173829023444956089503311173073618445753532875813867598663296856739315684903609697144796703000651178486736265301118699204591404539960193266425232481989189756061431525222968596964249933088718909743192976395466479225138794875961264058160999548340208799114303226288580379230841407309752248092079394823964414350647207773176541876297915527225415606053332774814257496363798032873335209244976152460512461303281664350940362200855365279247888394988618689137490228189308203886028193659048160287400841160648403948450468224084289104098406210815195475652974251962169023042708112638505809861677431741987644306174852881103908590163278563405878077124909779054561182311006333494307156408251018799408892243760644696289136985692091001832810603200225192529800598541540207945722295290503233051371076246617801246477670491898386246813202252408238696055801835478389207343314704575384096010591055146023561280888407508720627001204634924305070472606572970589678020718487701632305423434235349344522025507212353728960218265256211160666381382943117755892517604832475893838160595865215792161003146516488403270449519393015135593822826378540820967201713148164147547345002056230263528047074622225638748140991986702608398865399049744601427157886679868872401102950407289948283733583740631688248833604906587642185488339004414826636286040142084791683914628657165348291172073808784695309880256246134288491744925129655025265419367296706858162549072808281908104196280507954405184075922579759374364259900561966724140537986243526544191866882749547587269821552286730063949533728318429778480319961104918844731005904281956601875539922218659010377799608600522248104929915980307319208535294184439117445226023638753554745329005449341219363202337799785750760984531925797938724780584079004514261157265167710941377789482520847836003702978999053067419330030050926657009667612503509983499709440743897552530545661922756217360475717714559718725057125088075068494238743382339920393013025095894842804425739450336201397753875785039432714111470079033600589280327555233527701846804008145930925677049193844332677916202467853295244150505705862489551127671077913008968771802260142300348484357305227827114586911391477996693157074154238073649552902809477871814788982767900127707865775785353421816396574616339210499369715432824846523313545412258262472457613114462278858700390438045370815099558667681904548529563967959887782439051381515093051083839971093184924699533324883864533628068255474768530563318062535686651109902881658435530198615781114249938229626930315869443959252881511510806892499353192984181283162193449665304948147353594412389485553869698454787678542400068047527214712896215908316948738319413254818031964190264213846624574815962397511747360826691373404559244514825698683380176427007758604913736911634120333325940804474215742804747345600659876724975648842313122644729082808669136782282299383057415970849029516885694841248600202581390981775107207780538202966696283718312699336922215896101871392802295957267843867101490929563927994151894788454192611564225071646925001390206647138880897340472856291016111630131201127185218000527224245229374106598067483230331626123791916818249484120815023729026712298569622439434649600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002
 72228086929664420651106521304656510525340468690495933260044147676857493358690644482529638108395307511654564478438634721376272188778051867571677494303971390478873572178260066068150017356078782661241238987533757280852905172211680833294253145024943983656218695296759413733574883908589221245240568177781436209401676317319383038846775665336826901129631895822734268520475643048045127654624269933170907051010300717643313921865856559924232063151144365310173623205941144581550600924166393303087536601524168192597964476245223257921963650541646329278517143758923483173347723106601143537838642178278173829023444956089503311173073618445753532875813867598663296856739315684903609697144796703000651178486736265301118699204591404539960193266425232481989189756061431525222968596964249933088718909743192976395466479225138794875961264058160999548340208799114303226288580379230841407309752248092079394823964414350647207773176541876297915527225415606053332774814257496363798032873335209244976152460512461303281664350940362200855365279247888394988618689137490228189308203886028193659048160287400841160648403948450468224084289104098406210815195475652974251962169023042708112638505809861677431741987644306174852881103908590163278563405878077124909779054561182311006333494307156408251018799408892243760644696289136985692091001832810603200225192529800598541540207945722295290503233051371076246617801246477670491898386246813202252408238696055801835478389207343314704575384096010591055146023561280888407508720627001204634924305070472606572970589678020718487701632305423434235349344522025507212353728960218265256211160666381382943117755892517604832475893838160595865215792161003146516488403270449519393015135593822826378540820967201713148164147547345002056230263528047074622225638748140991986702608398865399049744601427157886679868872401102950407289948283733583740631688248833604906587642185488339004414826636286040142084791683914628657165348291172073808784695309880256246134288491744925129655025265419367296706858162549072808281908104196280507954405184075922579759374364259900561966724140537986243526544191866882749547587269821552286730063949533728318429778480319961104918844731005904281956601875539922218659010377799608600522248104929915980307319208535294184439117445226023638753554745329005449341219363202337799785750760984531925797938724780584079004514261157265167710941377789482520847836003702978999053067419330030050926657009667612503509983499709440743897552530545661922756217360475717714559718725057125088075068494238743382339920393013025095894842804425739450336201397753875785039432714111470079033600589280327555233527701846804008145930925677049193844332677916202467853295244150505705862489551127671077913008968771802260142300348484357305227827114586911391477996693157074154238073649552902809477871814788982767900127707865775785353421816396574616339210499369715432824846523313545412258262472457613114462278858700390438045370815099558667681904548529563967959887782439051381515093051083839971093184924699533324883864533628068255474768530563318062535686651109902881658435530198615781114249938229626930315869443959252881511510806892499353192984181283162193449665304948147353594412389485553869698454787678542400068047527214712896215908316948738319413254818031964190264213846624574815962397511747360826691373404559244514825698683380176427007758604913736911634120333325940804474215742804747345600659876724975648842313122644729082808669136782282299383057415970849029516885694841248600202581390981775107207780538202966696283718312699336922215896101871392802295957267843867101490929563927994151894788454192611564225071646925001390206647138880897340472856291016111630131201127185218000527224245229374106598067483230331626123791916818249484120815023729026712298569622439434649600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002
2
3
4
5
6
7
8
9
10
11
12
 72228086929664420651106521304656510525340468690495933260044147676857493358690644482529638108395307511654564478438634721376272188778051867571677494303971390478873572178260066068150017356078782661241238987533757280852905172211680833294253145024943983656218695296759413733574883908589221245240568177781436209401676317319383038846775665336826901129631895822734268520475643048045127654624269933170907051010300717643313921865856559924232063151144365310173623205941144581550600924166393303087536601524168192597964476245223257921963650541646329278517143758923483173347723106601143537838642178278173829023444956089503311173073618445753532875813867598663296856739315684903609697144796703000651178486736265301118699204591404539960193266425232481989189756061431525222968596964249933088718909743192976395466479225138794875961264058160999548340208799114303226288580379230841407309752248092079394823964414350647207773176541876297915527225415606053332774814257496363798032873335209244976152460512461303281664350940362200855365279247888394988618689137490228189308203886028193659048160287400841160648403948450468224084289104098406210815195475652974251962169023042708112638505809861677431741987644306174852881103908590163278563405878077124909779054561182311006333494307156408251018799408892243760644696289136985692091001832810603200225192529800598541540207945722295290503233051371076246617801246477670491898386246813202252408238696055801835478389207343314704575384096010591055146023561280888407508720627001204634924305070472606572970589678020718487701632305423434235349344522025507212353728960218265256211160666381382943117755892517604832475893838160595865215792161003146516488403270449519393015135593822826378540820967201713148164147547345002056230263528047074622225638748140991986702608398865399049744601427157886679868872401102950407289948283733583740631688248833604906587642185488339004414826636286040142084791683914628657165348291172073808784695309880256246134288491744925129655025265419367296706858162549072808281908104196280507954405184075922579759374364259900561966724140537986243526544191866882749547587269821552286730063949533728318429778480319961104918844731005904281956601875539922218659010377799608600522248104929915980307319208535294184439117445226023638753554745329005449341219363202337799785750760984531925797938724780584079004514261157265167710941377789482520847836003702978999053067419330030050926657009667612503509983499709440743897552530545661922756217360475717714559718725057125088075068494238743382339920393013025095894842804425739450336201397753875785039432714111470079033600589280327555233527701846804008145930925677049193844332677916202467853295244150505705862489551127671077913008968771802260142300348484357305227827114586911391477996693157074154238073649552902809477871814788982767900127707865775785353421816396574616339210499369715432824846523313545412258262472457613114462278858700390438045370815099558667681904548529563967959887782439051381515093051083839971093184924699533324883864533628068255474768530563318062535686651109902881658435530198615781114249938229626930315869443959252881511510806892499353192984181283162193449665304948147353594412389485553869698454787678542400068047527214712896215908316948738319413254818031964190264213846624574815962397511747360826691373404559244514825698683380176427007758604913736911634120333325940804474215742804747345600659876724975648842313122644729082808669136782282299383057415970849029516885694841248600202581390981775107207780538202966696283718312699336922215896101871392802295957267843867101490929563927994151894788454192611564225071646925001390206647138880897340472856291016111630131201127185218000527224245229374106598067483230331626123791916818249484120815023729026712298569622439434649600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 72228086929664420651106521304656510525340468690495933260044147676857493358690644482529638108395307511654564478438634721376272188778051867571677494303971390478873572178260066068150017356078782661241238987533757280852905172211680833294253145024943983656218695296759413733574883908589221245240568177781436209401676317319383038846775665336826901129631895822734268520475643048045127654624269933170907051010300717643313921865856559924232063151144365310173623205941144581550600924166393303087536601524168192597964476245223257921963650541646329278517143758923483173347723106601143537838642178278173829023444956089503311173073618445753532875813867598663296856739315684903609697144796703000651178486736265301118699204591404539960193266425232481989189756061431525222968596964249933088718909743192976395466479225138794875961264058160999548340208799114303226288580379230841407309752248092079394823964414350647207773176541876297915527225415606053332774814257496363798032873335209244976152460512461303281664350940362200855365279247888394988618689137490228189308203886028193659048160287400841160648403948450468224084289104098406210815195475652974251962169023042708112638505809861677431741987644306174852881103908590163278563405878077124909779054561182311006333494307156408251018799408892243760644696289136985692091001832810603200225192529800598541540207945722295290503233051371076246617801246477670491898386246813202252408238696055801835478389207343314704575384096010591055146023561280888407508720627001204634924305070472606572970589678020718487701632305423434235349344522025507212353728960218265256211160666381382943117755892517604832475893838160595865215792161003146516488403270449519393015135593822826378540820967201713148164147547345002056230263528047074622225638748140991986702608398865399049744601427157886679868872401102950407289948283733583740631688248833604906587642185488339004414826636286040142084791683914628657165348291172073808784695309880256246134288491744925129655025265419367296706858162549072808281908104196280507954405184075922579759374364259900561966724140537986243526544191866882749547587269821552286730063949533728318429778480319961104918844731005904281956601875539922218659010377799608600522248104929915980307319208535294184439117445226023638753554745329005449341219363202337799785750760984531925797938724780584079004514261157265167710941377789482520847836003702978999053067419330030050926657009667612503509983499709440743897552530545661922756217360475717714559718725057125088075068494238743382339920393013025095894842804425739450336201397753875785039432714111470079033600589280327555233527701846804008145930925677049193844332677916202467853295244150505705862489551127671077913008968771802260142300348484357305227827114586911391477996693157074154238073649552902809477871814788982767900127707865775785353421816396574616339210499369715432824846523313545412258262472457613114462278858700390438045370815099558667681904548529563967959887782439051381515093051083839971093184924699533324883864533628068255474768530563318062535686651109902881658435530198615781114249938229626930315869443959252881511510806892499353192984181283162193449665304948147353594412389485553869698454787678542400068047527214712896215908316948738319413254818031964190264213846624574815962397511747360826691373404559244514825698683380176427007758604913736911634120333325940804474215742804747345600659876724975648842313122644729082808669136782282299383057415970849029516885694841248600202581390981775107207780538202966696283718312699336922215896101871392802295957267843867101490929563927994151894788454192611564225071646925001390206647138880897340472856291016111630131201127185218000527224245229374106598067483230331626123791916818249484120815023729026712298569622439434649600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 72228086929664420651106521304656510525340468690495933260044147676857493358690644482529638108395307511654564478438634721376272188778051867571677494303971390478873572178260066068150017356078782661241238987533757280852905172211680833294253145024943983656218695296759413733574883908589221245240568177781436209401676317319383038846775665336826901129631895822734268520475643048045127654624269933170907051010300717643313921865856559924232063151144365310173623205941144581550600924166393303087536601524168192597964476245223257921963650541646329278517143758923483173347723106601143537838642178278173829023444956089503311173073618445753532875813867598663296856739315684903609697144796703000651178486736265301118699204591404539960193266425232481989189756061431525222968596964249933088718909743192976395466479225138794875961264058160999548340208799114303226288580379230841407309752248092079394823964414350647207773176541876297915527225415606053332774814257496363798032873335209244976152460512461303281664350940362200855365279247888394988618689137490228189308203886028193659048160287400841160648403948450468224084289104098406210815195475652974251962169023042708112638505809861677431741987644306174852881103908590163278563405878077124909779054561182311006333494307156408251018799408892243760644696289136985692091001832810603200225192529800598541540207945722295290503233051371076246617801246477670491898386246813202252408238696055801835478389207343314704575384096010591055146023561280888407508720627001204634924305070472606572970589678020718487701632305423434235349344522025507212353728960218265256211160666381382943117755892517604832475893838160595865215792161003146516488403270449519393015135593822826378540820967201713148164147547345002056230263528047074622225638748140991986702608398865399049744601427157886679868872401102950407289948283733583740631688248833604906587642185488339004414826636286040142084791683914628657165348291172073808784695309880256246134288491744925129655025265419367296706858162549072808281908104196280507954405184075922579759374364259900561966724140537986243526544191866882749547587269821552286730063949533728318429778480319961104918844731005904281956601875539922218659010377799608600522248104929915980307319208535294184439117445226023638753554745329005449341219363202337799785750760984531925797938724780584079004514261157265167710941377789482520847836003702978999053067419330030050926657009667612503509983499709440743897552530545661922756217360475717714559718725057125088075068494238743382339920393013025095894842804425739450336201397753875785039432714111470079033600589280327555233527701846804008145930925677049193844332677916202467853295244150505705862489551127671077913008968771802260142300348484357305227827114586911391477996693157074154238073649552902809477871814788982767900127707865775785353421816396574616339210499369715432824846523313545412258262472457613114462278858700390438045370815099558667681904548529563967959887782439051381515093051083839971093184924699533324883864533628068255474768530563318062535686651109902881658435530198615781114249938229626930315869443959252881511510806892499353192984181283162193449665304948147353594412389485553869698454787678542400068047527214712896215908316948738319413254818031964190264213846624574815962397511747360826691373404559244514825698683380176427007758604913736911634120333325940804474215742804747345600659876724975648842313122644729082808669136782282299383057415970849029516885694841248600202581390981775107207780538202966696283718312699336922215896101871392802295957267843867101490929563927994151894788454192611564225071646925001390206647138880897340472856291016111630131201127185218000527224245229374106598067483230331626123791916818249484120815023729026712298569622439434649600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002
2
3
4
5
6
 72228086929664420651106521304656510525340468690495933260044147676857493358690644482529638108395307511654564478438634721376272188778051867571677494303971390478873572178260066068150017356078782661241238987533757280852905172211680833294253145024943983656218695296759413733574883908589221245240568177781436209401676317319383038846775665336826901129631895822734268520475643048045127654624269933170907051010300717643313921865856559924232063151144365310173623205941144581550600924166393303087536601524168192597964476245223257921963650541646329278517143758923483173347723106601143537838642178278173829023444956089503311173073618445753532875813867598663296856739315684903609697144796703000651178486736265301118699204591404539960193266425232481989189756061431525222968596964249933088718909743192976395466479225138794875961264058160999548340208799114303226288580379230841407309752248092079394823964414350647207773176541876297915527225415606053332774814257496363798032873335209244976152460512461303281664350940362200855365279247888394988618689137490228189308203886028193659048160287400841160648403948450468224084289104098406210815195475652974251962169023042708112638505809861677431741987644306174852881103908590163278563405878077124909779054561182311006333494307156408251018799408892243760644696289136985692091001832810603200225192529800598541540207945722295290503233051371076246617801246477670491898386246813202252408238696055801835478389207343314704575384096010591055146023561280888407508720627001204634924305070472606572970589678020718487701632305423434235349344522025507212353728960218265256211160666381382943117755892517604832475893838160595865215792161003146516488403270449519393015135593822826378540820967201713148164147547345002056230263528047074622225638748140991986702608398865399049744601427157886679868872401102950407289948283733583740631688248833604906587642185488339004414826636286040142084791683914628657165348291172073808784695309880256246134288491744925129655025265419367296706858162549072808281908104196280507954405184075922579759374364259900561966724140537986243526544191866882749547587269821552286730063949533728318429778480319961104918844731005904281956601875539922218659010377799608600522248104929915980307319208535294184439117445226023638753554745329005449341219363202337799785750760984531925797938724780584079004514261157265167710941377789482520847836003702978999053067419330030050926657009667612503509983499709440743897552530545661922756217360475717714559718725057125088075068494238743382339920393013025095894842804425739450336201397753875785039432714111470079033600589280327555233527701846804008145930925677049193844332677916202467853295244150505705862489551127671077913008968771802260142300348484357305227827114586911391477996693157074154238073649552902809477871814788982767900127707865775785353421816396574616339210499369715432824846523313545412258262472457613114462278858700390438045370815099558667681904548529563967959887782439051381515093051083839971093184924699533324883864533628068255474768530563318062535686651109902881658435530198615781114249938229626930315869443959252881511510806892499353192984181283162193449665304948147353594412389485553869698454787678542400068047527214712896215908316948738319413254818031964190264213846624574815962397511747360826691373404559244514825698683380176427007758604913736911634120333325940804474215742804747345600659876724975648842313122644729082808669136782282299383057415970849029516885694841248600202581390981775107207780538202966696283718312699336922215896101871392802295957267843867101490929563927994151894788454192611564225071646925001390206647138880897340472856291016111630131201127185218000527224245229374106598067483230331626123791916818249484120815023729026712298569622439434649600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002
2
3
4
5
6
7
8
9
10
11
12
13
14

Given the following C code and unoptimized assembly code, your task is to generate highly optimized x86-64 assembly code.
C Code:

```c
#include <stdio.h>
char *n1501 = "72228086929664420651106521304656510525340468690495933260044147676857493358690644482529638108395307511654564478438634721376272188778051867571677494303971390478873572178260066068150017356078782661241238987533757280852905172211680833294253145024943983656218695296759413733574883908589221245240568177781436209401676317319383038846775665336826901129631895822734268520475643048045127654624269933170907051010300717643313921865856559924232063151144365310173623205941144581550600924166393303087536601524168192597964476245223257921963650541646329278517143758923483173347723106601143537838642178278173829023444956089503311173073618445753532875813867598663296856739315684903609697144796703000651178486736265301118699204591404539960193266425232481989189756061431525222968596964249933088718909743192976395466479225138794875961264058160999548340208799114303226288580379230841407309752248092079394823964414350647207773176541876297915527225415606053332774814257496363798032873335209244976152460512461303281664350940362200855365279247888394988618689137490228189308203886028193659048160287400841160648403948450468224084289104098406210815195475652974251962169023042708112638505809861677431741987644306174852881103908590163278563405878077124909779054561182311006333494307156408251018799408892243760644696289136985692091001832810603200225192529800598541540207945722295290503233051371076246617801246477670491898386246813202252408238696055801835478389207343314704575384096010591055146023561280888407508720627001204634924305070472606572970589678020718487701632305423434235349344522025507212353728960218265256211160666381382943117755892517604832475893838160595865215792161003146516488403270449519393015135593822826378540820967201713148164147547345002056230263528047074622225638748140991986702608398865399049744601427157886679868872401102950407289948283733583740631688248833604906587642185488339004414826636286040142084791683914628657165348291172073808784695309880256246134288491744925129655025265419367296706858162549072808281908104196280507954405184075922579759374364259900561966724140537986243526544191866882749547587269821552286730063949533728318429778480319961104918844731005904281956601875539922218659010377799608600522248104929915980307319208535294184439117445226023638753554745329005449341219363202337799785750760984531925797938724780584079004514261157265167710941377789482520847836003702978999053067419330030050926657009667612503509983499709440743897552530545661922756217360475717714559718725057125088075068494238743382339920393013025095894842804425739450336201397753875785039432714111470079033600589280327555233527701846804008145930925677049193844332677916202467853295244150505705862489551127671077913008968771802260142300348484357305227827114586911391477996693157074154238073649552902809477871814788982767900127707865775785353421816396574616339210499369715432824846523313545412258262472457613114462278858700390438045370815099558667681904548529563967959887782439051381515093051083839971093184924699533324883864533628068255474768530563318062535686651109902881658435530198615781114249938229626930315869443959252881511510806892499353192984181283162193449665304948147353594412389485553869698454787678542400068047527214712896215908316948738319413254818031964190264213846624574815962397511747360826691373404559244514825698683380176427007758604913736911634120333325940804474215742804747345600659876724975648842313122644729082808669136782282299383057415970849029516885694841248600202581390981775107207780538202966696283718312699336922215896101871392802295957267843867101490929563927994151894788454192611564225071646925001390206647138880897340472856291016111630131201127185218000527224245229374106598067483230331626123791916818249484120815023729026712298569622439434649600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002";

int main(){
  int n;
  scanf("%d", &n);
  puts(n1501);
  int i;
  for(i=1;i<=n;i++){
    printf("%d\n", i+1);
  }
  return 0;
}```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.globl	n1501
	.section	.rodata
	.align 8
.LC0:
	.ascii	"722280869296644206511065213046565105253404686904959332600441"
	.ascii	"476768574933586906444825296381083953075116545644784386347213"
	.ascii	"762721887780518675716774943039713904788735721782600660681500"
	.ascii	"173560787826612412389875337572808529051722116808332942531450"
	.ascii	"249439836562186952967594137335748839085892212452405681777814"
	.ascii	"362094016763173193830388467756653368269011296318958227342685"
	.ascii	"204756430480451276546242699331709070510103007176433139218658"
	.ascii	"565599242320631511443653101736232059411445815506009241663933"
	.ascii	"030875366015241681925979644762452232579219636505416463292785"
	.ascii	"171437589234831733477231066011435378386421782781738290234449"
	.ascii	"560895033111730736184457535328758138675986632968567393156849"
	.ascii	"036096971447967030006511784867362653011186992045914045399601"
	.ascii	"932664252324819891897560614315252229685969642499330887189097"
	.ascii	"431929763954664792251387948759612640581609995483402087991143"
	.ascii	"032262885803792308414073097522480920793948239644143506472077"
	.ascii	"731765418762979155272254156060533327748142574963637980328733"
	.ascii	"352092449761524605124613032816643509403622008553652792478883"
	.ascii	"949886186891374902281893082038860281936590481602874008411606"
	.ascii	"484039484504682240842891040984062108151954756529742519621690"
	.ascii	"230427081126385058098616774317419876443061748528811039085901"
	.ascii	"632785634058780771249097790545611823110063334943071564082510"
	.ascii	"187994088922437606446962891369856920910018328106032002251925"
	.ascii	"298005985415402079457222952905032330513710762466178012464776"
	.ascii	"704918983862468132022524082386960558018354783892073433147045"
	.ascii	"753840960105910551460235612808884075087206270012046349243050"
	.ascii	"704726065729705896780207184877016323054234342353493445220255"
	.ascii	"072123537289602182652562111606663813829431177558925176048324"
	.ascii	"758938381605958652157921610031465164884032704495193930151355"
	.ascii	"938228263785408209672017131481641475473450020562302635280470"
	.ascii	"746222256387481409919867026083988653990497446014271578866798"
	.ascii	"688724011029504072899482837335837406316882488336049065876421"
	.ascii	"854883390044148266362860401420847916839146286571653482911720"
	.ascii	"738087846953098802562461342884917449251296550252654193672967"
	.ascii	"06858162549072808281"
	.ascii	"908104196280507954405184075922579759374364259900561966724140"
	.ascii	"537986243526544191866882749547587269821552286730063949533728"
	.ascii	"318429778480319961104918844731005904281956601875539922218659"
	.ascii	"010377799608600522248104929915980307319208535294184439117445"
	.ascii	"226023638753554745329005449341219363202337799785750760984531"
	.ascii	"925797938724780584079004514261157265167710941377789482520847"
	.ascii	"836003702978999053067419330030050926657009667612503509983499"
	.ascii	"709440743897552530545661922756217360475717714559718725057125"
	.ascii	"088075068494238743382339920393013025095894842804425739450336"
	.ascii	"201397753875785039432714111470079033600589280327555233527701"
	.ascii	"846804008145930925677049193844332677916202467853295244150505"
	.ascii	"705862489551127671077913008968771802260142300348484357305227"
	.ascii	"827114586911391477996693157074154238073649552902809477871814"
	.ascii	"788982767900127707865775785353421816396574616339210499369715"
	.ascii	"432824846523313545412258262472457613114462278858700390438045"
	.ascii	"370815099558667681904548529563967959887782439051381515093051"
	.ascii	"083839971093184924699533324883864533628068255474768530563318"
	.ascii	"062535686651109902881658435530198615781114249938229626930315"
	.ascii	"869443959252881511510806892499353192984181283162193449665304"
	.ascii	"948147353594412389485553869698454787678542400068047527214712"
	.ascii	"896215908316948738319413254818031964190264213846624574815962"
	.ascii	"397511747360826691373404559244514825698683380176427007758604"
	.ascii	"913736911634120333325940804474215742804747345600659876724975"
	.ascii	"648842313122644729082808669136782282299383057415970849029516"
	.ascii	"885694841248600202581390981775107207780538202966696283718312"
	.ascii	"699336922215896101871392802295957267843867101490929563927994"
	.ascii	"151894788454192611564225071646925001390206647138880897340472"
	.ascii	"856291016111630131201127185218000527224245229374106598067483"
	.ascii	"230331626123791916818249484120815023729026712298569622439434"
	.ascii	"649600000000000000000000000000000000000000000000000000000000"
	.ascii	"000000000000000000000000000000000000000000000000000000000000"
	.ascii	"000000000000000000000000000000000000000000000000000000000000"
	.ascii	"000000000000000000000000000000000000000000000000000000000000"
	.ascii	"00000000000000000000"
	.string	"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002"
	.section	.data.rel.local,"aw"
	.align 8
	.type	n1501, @object
	.size	n1501, 8
n1501:
	.quad	.LC0
	.section	.rodata
.LC1:
	.string	"%d"
.LC2:
	.string	"%d\n"
	.text
	.globl	main
	.type	main, @function
main:
.LFB0:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$16, %rsp
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
	leaq	-16(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	movq	n1501(%rip), %rax
	movq	%rax, %rdi
	call	puts@PLT
	movl	$1, -12(%rbp)
	jmp	.L2
.L3:
	movl	-12(%rbp), %eax
	addl	$1, %eax
	movl	%eax, %esi
	leaq	.LC2(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	printf@PLT
	addl	$1, -12(%rbp)
.L2:
	movl	-16(%rbp), %eax
	cmpl	%eax, -12(%rbp)
	jle	.L3
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L5
	call	__stack_chk_fail@PLT
.L5:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.size	main, .-main
	.ident	"GCC: (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	1f - 0f
	.long	4f - 1f
	.long	5
0:
	.string	"GNU"
1:
	.align 8
	.long	0xc0000002
	.long	3f - 2f
2:
	.long	0x3
3:
	.align 8
4:
```

Only output the optimized assembly code. Do not include any other text. Do not write any comments in the assembly code. Wrap the assembly code in ```assembly``` tags.
train
	.file	"temp.c"
	.text
	.globl	n1501
	.section	.rodata
	.align 8
.LC0:
	.ascii	"722280869296644206511065213046565105253404686904959332600441"
	.ascii	"476768574933586906444825296381083953075116545644784386347213"
	.ascii	"762721887780518675716774943039713904788735721782600660681500"
	.ascii	"173560787826612412389875337572808529051722116808332942531450"
	.ascii	"249439836562186952967594137335748839085892212452405681777814"
	.ascii	"362094016763173193830388467756653368269011296318958227342685"
	.ascii	"204756430480451276546242699331709070510103007176433139218658"
	.ascii	"565599242320631511443653101736232059411445815506009241663933"
	.ascii	"030875366015241681925979644762452232579219636505416463292785"
	.ascii	"171437589234831733477231066011435378386421782781738290234449"
	.ascii	"560895033111730736184457535328758138675986632968567393156849"
	.ascii	"036096971447967030006511784867362653011186992045914045399601"
	.ascii	"932664252324819891897560614315252229685969642499330887189097"
	.ascii	"431929763954664792251387948759612640581609995483402087991143"
	.ascii	"032262885803792308414073097522480920793948239644143506472077"
	.ascii	"731765418762979155272254156060533327748142574963637980328733"
	.ascii	"352092449761524605124613032816643509403622008553652792478883"
	.ascii	"949886186891374902281893082038860281936590481602874008411606"
	.ascii	"484039484504682240842891040984062108151954756529742519621690"
	.ascii	"230427081126385058098616774317419876443061748528811039085901"
	.ascii	"632785634058780771249097790545611823110063334943071564082510"
	.ascii	"187994088922437606446962891369856920910018328106032002251925"
	.ascii	"298005985415402079457222952905032330513710762466178012464776"
	.ascii	"704918983862468132022524082386960558018354783892073433147045"
	.ascii	"753840960105910551460235612808884075087206270012046349243050"
	.ascii	"704726065729705896780207184877016323054234342353493445220255"
	.ascii	"072123537289602182652562111606663813829431177558925176048324"
	.ascii	"758938381605958652157921610031465164884032704495193930151355"
	.ascii	"938228263785408209672017131481641475473450020562302635280470"
	.ascii	"746222256387481409919867026083988653990497446014271578866798"
	.ascii	"688724011029504072899482837335837406316882488336049065876421"
	.ascii	"854883390044148266362860401420847916839146286571653482911720"
	.ascii	"738087846953098802562461342884917449251296550252654193672967"
	.ascii	"06858162549072808281"
	.ascii	"908104196280507954405184075922579759374364259900561966724140"
	.ascii	"537986243526544191866882749547587269821552286730063949533728"
	.ascii	"318429778480319961104918844731005904281956601875539922218659"
	.ascii	"010377799608600522248104929915980307319208535294184439117445"
	.ascii	"226023638753554745329005449341219363202337799785750760984531"
	.ascii	"925797938724780584079004514261157265167710941377789482520847"
	.ascii	"836003702978999053067419330030050926657009667612503509983499"
	.ascii	"709440743897552530545661922756217360475717714559718725057125"
	.ascii	"088075068494238743382339920393013025095894842804425739450336"
	.ascii	"201397753875785039432714111470079033600589280327555233527701"
	.ascii	"846804008145930925677049193844332677916202467853295244150505"
	.ascii	"705862489551127671077913008968771802260142300348484357305227"
	.ascii	"827114586911391477996693157074154238073649552902809477871814"
	.ascii	"788982767900127707865775785353421816396574616339210499369715"
	.ascii	"432824846523313545412258262472457613114462278858700390438045"
	.ascii	"370815099558667681904548529563967959887782439051381515093051"
	.ascii	"083839971093184924699533324883864533628068255474768530563318"
	.ascii	"062535686651109902881658435530198615781114249938229626930315"
	.ascii	"869443959252881511510806892499353192984181283162193449665304"
	.ascii	"948147353594412389485553869698454787678542400068047527214712"
	.ascii	"896215908316948738319413254818031964190264213846624574815962"
	.ascii	"397511747360826691373404559244514825698683380176427007758604"
	.ascii	"913736911634120333325940804474215742804747345600659876724975"
	.ascii	"648842313122644729082808669136782282299383057415970849029516"
	.ascii	"885694841248600202581390981775107207780538202966696283718312"
	.ascii	"699336922215896101871392802295957267843867101490929563927994"
	.ascii	"151894788454192611564225071646925001390206647138880897340472"
	.ascii	"856291016111630131201127185218000527224245229374106598067483"
	.ascii	"230331626123791916818249484120815023729026712298569622439434"
	.ascii	"649600000000000000000000000000000000000000000000000000000000"
	.ascii	"000000000000000000000000000000000000000000000000000000000000"
	.ascii	"000000000000000000000000000000000000000000000000000000000000"
	.ascii	"000000000000000000000000000000000000000000000000000000000000"
	.ascii	"00000000000000000000"
	.string	"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002"
	.section	.data.rel.local,"aw"
	.align 8
	.type	n1501, @object
	.size	n1501, 8
n1501:
	.quad	.LC0
	.section	.rodata
.LC1:
	.string	"%d"
.LC2:
	.string	"%d\n"
	.text
	.globl	main
	.type	main, @function
main:
.LFB0:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$16, %rsp
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
	leaq	-16(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	movq	n1501(%rip), %rax
	movq	%rax, %rdi
	call	puts@PLT
	movl	$1, -12(%rbp)
	jmp	.L2
.L3:
	movl	-12(%rbp), %eax
	addl	$1, %eax
	movl	%eax, %esi
	leaq	.LC2(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	printf@PLT
	addl	$1, -12(%rbp)
.L2:
	movl	-16(%rbp), %eax
	cmpl	%eax, -12(%rbp)
	jle	.L3
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L5
	call	__stack_chk_fail@PLT
.L5:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.size	main, .-main
	.ident	"GCC: (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	1f - 0f
	.long	4f - 1f
	.long	5
0:
	.string	"GNU"
1:
	.align 8
	.long	0xc0000002
	.long	3f - 2f
2:
	.long	0x3
3:
	.align 8
4:
