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>
#include <stdlib.h>
#include <string.h>

#define BIG 2000000007

#define MOD 1000000007
typedef unsigned long long ull;
typedef   signed long long sll;


#define N_MAX 50
#define M_MAX 200000

ull n, m;
ull a[N_MAX];
ull b[N_MAX];

void swap_adj(ull *a, ull *b){
	ull tmp = *b;
	*b = *a;
	*a = tmp;
	return;
}

int comp(const void *a, const void *b){
	if (*(ull*)a < *(ull*)b) {
		return -1;
	} else if (*(ull*)a > *(ull*)b) {
		return +1;
	} else {
		return 0;
	}
}

ull divide(ull a, ull b){
	ull x = MOD - 2;
	ull ans = 1;
	while (x) {
		if (x & 1) ans = (ans * b) % MOD;
		b = (b * b) % MOD;
		x /= 2;
	}
	return (a * ans) % MOD;
}

int digits(ull x){
	int i = 1;
	while (x >= 10) {
		x /= 10;
		i++;
	}
	return i;
}

int nibutan(ull x, int begin, int end){
	while (begin + 1 < end) {
		int med = (begin + end) / 2;
		if (b[med] < x) {
			begin = med;
		} else {
			end = med;
		}
	}
	if (b[begin] < x) {
		return begin;
	} else {
		return begin - 1;
	}
}

int solve(){
	int i, j;
	ull x, y;

	n = 50;

	x = (n - 1) + m / n;
	y = m % n;

	for (i = 0; i < n; i++) {
		if (i < y) {
			a[i] = x + (n - y + 1);
		} else {
			a[i] = x - y;
		}
	}

	printf("%llu\n", n);
	for (i = 0; i < n; i++) {
		printf("%llu%c", a[i], ((i + 1 == n) ? '\n' : ' '));
	}

	return 0;
}

int main(void){
	ull i;

	scanf("%llu", &m);

	solve();

	return 0;
}
```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.globl	n
	.bss
	.align 8
	.type	n, @object
	.size	n, 8
n:
	.zero	8
	.globl	m
	.align 8
	.type	m, @object
	.size	m, 8
m:
	.zero	8
	.globl	a
	.align 32
	.type	a, @object
	.size	a, 400
a:
	.zero	400
	.globl	b
	.align 32
	.type	b, @object
	.size	b, 400
b:
	.zero	400
	.text
	.globl	swap_adj
	.type	swap_adj, @function
swap_adj:
.LFB6:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movq	%rdi, -24(%rbp)
	movq	%rsi, -32(%rbp)
	movq	-32(%rbp), %rax
	movq	(%rax), %rax
	movq	%rax, -8(%rbp)
	movq	-24(%rbp), %rax
	movq	(%rax), %rdx
	movq	-32(%rbp), %rax
	movq	%rdx, (%rax)
	movq	-24(%rbp), %rax
	movq	-8(%rbp), %rdx
	movq	%rdx, (%rax)
	nop
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	swap_adj, .-swap_adj
	.globl	comp
	.type	comp, @function
comp:
.LFB7:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movq	%rdi, -8(%rbp)
	movq	%rsi, -16(%rbp)
	movq	-8(%rbp), %rax
	movq	(%rax), %rdx
	movq	-16(%rbp), %rax
	movq	(%rax), %rax
	cmpq	%rax, %rdx
	jnb	.L4
	movl	$-1, %eax
	jmp	.L5
.L4:
	movq	-8(%rbp), %rax
	movq	(%rax), %rdx
	movq	-16(%rbp), %rax
	movq	(%rax), %rax
	cmpq	%rax, %rdx
	jbe	.L6
	movl	$1, %eax
	jmp	.L5
.L6:
	movl	$0, %eax
.L5:
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	comp, .-comp
	.globl	divide
	.type	divide, @function
divide:
.LFB8:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movq	%rdi, -24(%rbp)
	movq	%rsi, -32(%rbp)
	movq	$1000000005, -16(%rbp)
	movq	$1, -8(%rbp)
	jmp	.L8
.L10:
	movq	-16(%rbp), %rax
	andl	$1, %eax
	testq	%rax, %rax
	je	.L9
	movq	-8(%rbp), %rax
	imulq	-32(%rbp), %rax
	movq	%rax, %rcx
	movabsq	$-8543223828751151131, %rdx
	movq	%rcx, %rax
	mulq	%rdx
	movq	%rdx, %rax
	shrq	$29, %rax
	movq	%rax, -8(%rbp)
	movq	-8(%rbp), %rax
	imulq	$1000000007, %rax, %rdx
	movq	%rcx, %rax
	subq	%rdx, %rax
	movq	%rax, -8(%rbp)
.L9:
	movq	-32(%rbp), %rax
	imulq	%rax, %rax
	movq	%rax, %rcx
	movabsq	$-8543223828751151131, %rdx
	movq	%rcx, %rax
	mulq	%rdx
	movq	%rdx, %rax
	shrq	$29, %rax
	movq	%rax, -32(%rbp)
	movq	-32(%rbp), %rax
	imulq	$1000000007, %rax, %rdx
	movq	%rcx, %rax
	subq	%rdx, %rax
	movq	%rax, -32(%rbp)
	movq	-16(%rbp), %rax
	shrq	%rax
	movq	%rax, -16(%rbp)
.L8:
	cmpq	$0, -16(%rbp)
	jne	.L10
	movq	-24(%rbp), %rax
	imulq	-8(%rbp), %rax
	movq	%rax, %rcx
	movabsq	$-8543223828751151131, %rdx
	movq	%rcx, %rax
	mulq	%rdx
	movq	%rdx, %rax
	shrq	$29, %rax
	imulq	$1000000007, %rax, %rdx
	movq	%rcx, %rax
	subq	%rdx, %rax
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	divide, .-divide
	.globl	digits
	.type	digits, @function
digits:
.LFB9:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movq	%rdi, -24(%rbp)
	movl	$1, -4(%rbp)
	jmp	.L13
.L14:
	movq	-24(%rbp), %rax
	movabsq	$-3689348814741910323, %rdx
	mulq	%rdx
	movq	%rdx, %rax
	shrq	$3, %rax
	movq	%rax, -24(%rbp)
	addl	$1, -4(%rbp)
.L13:
	cmpq	$9, -24(%rbp)
	ja	.L14
	movl	-4(%rbp), %eax
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	digits, .-digits
	.globl	nibutan
	.type	nibutan, @function
nibutan:
.LFB10:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movq	%rdi, -24(%rbp)
	movl	%esi, -28(%rbp)
	movl	%edx, -32(%rbp)
	jmp	.L17
.L19:
	movl	-28(%rbp), %edx
	movl	-32(%rbp), %eax
	addl	%edx, %eax
	movl	%eax, %edx
	shrl	$31, %edx
	addl	%edx, %eax
	sarl	%eax
	movl	%eax, -4(%rbp)
	movl	-4(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	leaq	b(%rip), %rax
	movq	(%rdx,%rax), %rax
	cmpq	%rax, -24(%rbp)
	jbe	.L18
	movl	-4(%rbp), %eax
	movl	%eax, -28(%rbp)
	jmp	.L17
.L18:
	movl	-4(%rbp), %eax
	movl	%eax, -32(%rbp)
.L17:
	movl	-28(%rbp), %eax
	addl	$1, %eax
	cmpl	%eax, -32(%rbp)
	jg	.L19
	movl	-28(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	leaq	b(%rip), %rax
	movq	(%rdx,%rax), %rax
	cmpq	%rax, -24(%rbp)
	jbe	.L20
	movl	-28(%rbp), %eax
	jmp	.L21
.L20:
	movl	-28(%rbp), %eax
	subl	$1, %eax
.L21:
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	nibutan, .-nibutan
	.section	.rodata
.LC0:
	.string	"%llu\n"
.LC1:
	.string	"%llu%c"
	.text
	.globl	solve
	.type	solve, @function
solve:
.LFB11:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$32, %rsp
	movq	$50, n(%rip)
	movq	m(%rip), %rax
	movq	n(%rip), %rsi
	movl	$0, %edx
	divq	%rsi
	movq	%rax, %rdx
	movq	n(%rip), %rax
	addq	%rdx, %rax
	subq	$1, %rax
	movq	%rax, -16(%rbp)
	movq	m(%rip), %rax
	movq	n(%rip), %rcx
	movl	$0, %edx
	divq	%rcx
	movq	%rdx, -8(%rbp)
	movl	$0, -20(%rbp)
	jmp	.L23
.L26:
	movl	-20(%rbp), %eax
	cltq
	cmpq	%rax, -8(%rbp)
	jbe	.L24
	movq	n(%rip), %rax
	subq	-8(%rbp), %rax
	movq	%rax, %rdx
	movq	-16(%rbp), %rax
	addq	%rdx, %rax
	leaq	1(%rax), %rcx
	movl	-20(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	leaq	a(%rip), %rax
	movq	%rcx, (%rdx,%rax)
	jmp	.L25
.L24:
	movq	-16(%rbp), %rax
	subq	-8(%rbp), %rax
	movl	-20(%rbp), %edx
	movslq	%edx, %rdx
	leaq	0(,%rdx,8), %rcx
	leaq	a(%rip), %rdx
	movq	%rax, (%rcx,%rdx)
.L25:
	addl	$1, -20(%rbp)
.L23:
	movl	-20(%rbp), %eax
	movslq	%eax, %rdx
	movq	n(%rip), %rax
	cmpq	%rax, %rdx
	jb	.L26
	movq	n(%rip), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	printf@PLT
	movl	$0, -20(%rbp)
	jmp	.L27
.L30:
	movl	-20(%rbp), %eax
	addl	$1, %eax
	movslq	%eax, %rdx
	movq	n(%rip), %rax
	cmpq	%rax, %rdx
	jne	.L28
	movl	$10, %ecx
	jmp	.L29
.L28:
	movl	$32, %ecx
.L29:
	movl	-20(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	leaq	a(%rip), %rax
	movq	(%rdx,%rax), %rax
	movl	%ecx, %edx
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	printf@PLT
	addl	$1, -20(%rbp)
.L27:
	movl	-20(%rbp), %eax
	movslq	%eax, %rdx
	movq	n(%rip), %rax
	cmpq	%rax, %rdx
	jb	.L30
	movl	$0, %eax
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	solve, .-solve
	.section	.rodata
.LC2:
	.string	"%llu"
	.text
	.globl	main
	.type	main, @function
main:
.LFB12:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	leaq	m(%rip), %rax
	movq	%rax, %rsi
	leaq	.LC2(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	movl	$0, %eax
	call	solve
	movl	$0, %eax
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.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
	.p2align 4
	.globl	swap_adj
	.type	swap_adj, @function
swap_adj:
.LFB51:
	.cfi_startproc
	endbr64
	movq	(%rsi), %rax
	movq	(%rdi), %rdx
	movq	%rdx, (%rsi)
	movq	%rax, (%rdi)
	ret
	.cfi_endproc
.LFE51:
	.size	swap_adj, .-swap_adj
	.p2align 4
	.globl	comp
	.type	comp, @function
comp:
.LFB52:
	.cfi_startproc
	endbr64
	movq	(%rsi), %rax
	cmpq	%rax, (%rdi)
	movl	$-1, %edx
	seta	%al
	movzbl	%al, %eax
	cmovb	%edx, %eax
	ret
	.cfi_endproc
.LFE52:
	.size	comp, .-comp
	.p2align 4
	.globl	divide
	.type	divide, @function
divide:
.LFB53:
	.cfi_startproc
	endbr64
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset 3, -16
	movl	$30, %r8d
	movq	%rdi, %rbx
	movl	$1, %ecx
	movabsq	$-8543223828751151131, %r11
	movl	$1000000005, %edi
	.p2align 4,,10
	.p2align 3
.L8:
	testb	$1, %dil
	je	.L7
	imulq	%rsi, %rcx
	movq	%rcx, %rax
	mulq	%r11
	shrq	$29, %rdx
	imulq	$1000000007, %rdx, %rax
	subq	%rax, %rcx
.L7:
	imulq	%rsi, %rsi
	shrq	%rdi
	movq	%rsi, %rax
	movq	%rsi, %r9
	mulq	%r11
	movq	%rdx, %rsi
	shrq	$29, %rsi
	imulq	$1000000007, %rsi, %r10
	movq	%r9, %rsi
	subq	%r10, %rsi
	subl	$1, %r8d
	jne	.L8
	imulq	%rcx, %rbx
	movq	%rbx, %rax
	mulq	%r11
	movq	%rdx, %rax
	shrq	$29, %rax
	imulq	$1000000007, %rax, %rdx
	movq	%rbx, %rax
	popq	%rbx
	.cfi_def_cfa_offset 8
	subq	%rdx, %rax
	ret
	.cfi_endproc
.LFE53:
	.size	divide, .-divide
	.p2align 4
	.globl	digits
	.type	digits, @function
digits:
.LFB54:
	.cfi_startproc
	endbr64
	movq	%rdi, %rdx
	movl	$1, %r8d
	cmpq	$9, %rdi
	jbe	.L14
	movabsq	$-3689348814741910323, %rsi
	.p2align 4,,10
	.p2align 3
.L16:
	movq	%rdx, %rax
	movq	%rdx, %rcx
	addl	$1, %r8d
	mulq	%rsi
	shrq	$3, %rdx
	cmpq	$99, %rcx
	ja	.L16
.L14:
	movl	%r8d, %eax
	ret
	.cfi_endproc
.LFE54:
	.size	digits, .-digits
	.p2align 4
	.globl	nibutan
	.type	nibutan, @function
nibutan:
.LFB55:
	.cfi_startproc
	endbr64
	movl	%esi, %eax
	leaq	b(%rip), %r9
	leal	1(%rsi), %r8d
	jmp	.L21
	.p2align 4,,10
	.p2align 3
.L22:
	leal	(%rax,%rdx), %esi
	movl	%esi, %ecx
	shrl	$31, %ecx
	addl	%esi, %ecx
	sarl	%ecx
	movslq	%ecx, %rsi
	cmpq	%rdi, (%r9,%rsi,8)
	jnb	.L25
	movl	%ecx, %eax
	leal	1(%rcx), %r8d
.L21:
	cmpl	%edx, %r8d
	jl	.L22
	movslq	%eax, %rdx
	cmpq	%rdi, (%r9,%rdx,8)
	adcl	$-1, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L25:
	movl	%ecx, %edx
	jmp	.L21
	.cfi_endproc
.LFE55:
	.size	nibutan, .-nibutan
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"%llu\n"
.LC1:
	.string	"%llu%c"
	.text
	.p2align 4
	.globl	solve
	.type	solve, @function
solve:
.LFB56:
	.cfi_startproc
	endbr64
	movq	m(%rip), %rsi
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	movabsq	$-6640827866535438581, %rcx
	movq	$50, n(%rip)
	movq	%rsi, %rdx
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	shrq	%rdx
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	leaq	a(%rip), %rbx
	movq	%rdx, %rax
	mulq	%rcx
	shrq	$4, %rdx
	leaq	(%rdx,%rdx,4), %rax
	movq	%rdx, %rcx
	leaq	(%rax,%rax,4), %rax
	addq	$49, %rcx
	addq	%rax, %rax
	subq	%rax, %rsi
	xorl	%eax, %eax
	subq	%rsi, %rcx
	movq	%rsi, %rdx
	leaq	51(%rcx), %rsi
	.p2align 4,,10
	.p2align 3
.L30:
	cmpq	%rax, %rdx
	jbe	.L27
.L40:
	movq	%rsi, (%rbx,%rax,8)
	addq	$1, %rax
	cmpq	%rax, %rdx
	ja	.L40
.L27:
	movq	%rcx, (%rbx,%rax,8)
	addq	$1, %rax
	cmpq	$50, %rax
	jne	.L30
	movl	$50, %edx
	leaq	.LC0(%rip), %rsi
	movl	$1, %edi
	xorl	%eax, %eax
	call	__printf_chk@PLT
	movq	n(%rip), %rax
	xorl	%edx, %edx
	leaq	.LC1(%rip), %r12
	testq	%rax, %rax
	jne	.L31
	jmp	.L36
	.p2align 4,,10
	.p2align 3
.L41:
	movq	%rbp, %rdx
.L31:
	leaq	1(%rdx), %rbp
	movl	$10, %ecx
	movq	(%rbx,%rdx,8), %rdx
	cmpq	%rbp, %rax
	je	.L39
	movl	$32, %ecx
.L39:
	movq	%r12, %rsi
	movl	$1, %edi
	xorl	%eax, %eax
	call	__printf_chk@PLT
	movq	n(%rip), %rax
	cmpq	%rbp, %rax
	ja	.L41
.L36:
	popq	%rbx
	.cfi_def_cfa_offset 24
	xorl	%eax, %eax
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE56:
	.size	solve, .-solve
	.section	.rodata.str1.1
.LC2:
	.string	"%llu"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB57:
	.cfi_startproc
	endbr64
	subq	$8, %rsp
	.cfi_def_cfa_offset 16
	leaq	m(%rip), %rsi
	leaq	.LC2(%rip), %rdi
	xorl	%eax, %eax
	call	__isoc99_scanf@PLT
	xorl	%eax, %eax
	call	solve
	xorl	%eax, %eax
	addq	$8, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE57:
	.size	main, .-main
	.globl	b
	.bss
	.align 32
	.type	b, @object
	.size	b, 400
b:
	.zero	400
	.globl	a
	.align 32
	.type	a, @object
	.size	a, 400
a:
	.zero	400
	.globl	m
	.align 8
	.type	m, @object
	.size	m, 8
m:
	.zero	8
	.globl	n
	.align 8
	.type	n, @object
	.size	n, 8
n:
	.zero	8
	.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
	.p2align 4
	.globl	swap_adj
	.type	swap_adj, @function
swap_adj:
.LFB51:
	.cfi_startproc
	endbr64
	movq	(%rsi), %rax
	movq	(%rdi), %rdx
	movq	%rdx, (%rsi)
	movq	%rax, (%rdi)
	ret
	.cfi_endproc
.LFE51:
	.size	swap_adj, .-swap_adj
	.p2align 4
	.globl	comp
	.type	comp, @function
comp:
.LFB52:
	.cfi_startproc
	endbr64
	movq	(%rsi), %rax
	cmpq	%rax, (%rdi)
	movl	$-1, %edx
	seta	%al
	movzbl	%al, %eax
	cmovb	%edx, %eax
	ret
	.cfi_endproc
.LFE52:
	.size	comp, .-comp
	.p2align 4
	.globl	divide
	.type	divide, @function
divide:
.LFB53:
	.cfi_startproc
	endbr64
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset 3, -16
	movl	$30, %r8d
	movq	%rdi, %rbx
	movl	$1, %ecx
	movabsq	$-8543223828751151131, %r11
	movl	$1000000005, %edi
	.p2align 4,,10
	.p2align 3
.L8:
	testb	$1, %dil
	je	.L7
	imulq	%rsi, %rcx
	movq	%rcx, %rax
	mulq	%r11
	shrq	$29, %rdx
	imulq	$1000000007, %rdx, %rax
	subq	%rax, %rcx
.L7:
	imulq	%rsi, %rsi
	shrq	%rdi
	movq	%rsi, %rax
	movq	%rsi, %r9
	mulq	%r11
	movq	%rdx, %rsi
	shrq	$29, %rsi
	imulq	$1000000007, %rsi, %r10
	movq	%r9, %rsi
	subq	%r10, %rsi
	subl	$1, %r8d
	jne	.L8
	imulq	%rcx, %rbx
	movq	%rbx, %rax
	mulq	%r11
	movq	%rdx, %rax
	shrq	$29, %rax
	imulq	$1000000007, %rax, %rdx
	movq	%rbx, %rax
	popq	%rbx
	.cfi_def_cfa_offset 8
	subq	%rdx, %rax
	ret
	.cfi_endproc
.LFE53:
	.size	divide, .-divide
	.p2align 4
	.globl	digits
	.type	digits, @function
digits:
.LFB54:
	.cfi_startproc
	endbr64
	movq	%rdi, %rdx
	movl	$1, %r8d
	cmpq	$9, %rdi
	jbe	.L14
	movabsq	$-3689348814741910323, %rsi
	.p2align 4,,10
	.p2align 3
.L16:
	movq	%rdx, %rax
	movq	%rdx, %rcx
	addl	$1, %r8d
	mulq	%rsi
	shrq	$3, %rdx
	cmpq	$99, %rcx
	ja	.L16
.L14:
	movl	%r8d, %eax
	ret
	.cfi_endproc
.LFE54:
	.size	digits, .-digits
	.p2align 4
	.globl	nibutan
	.type	nibutan, @function
nibutan:
.LFB55:
	.cfi_startproc
	endbr64
	movl	%esi, %eax
	leaq	b(%rip), %r9
	leal	1(%rsi), %r8d
	jmp	.L21
	.p2align 4,,10
	.p2align 3
.L22:
	leal	(%rax,%rdx), %esi
	movl	%esi, %ecx
	shrl	$31, %ecx
	addl	%esi, %ecx
	sarl	%ecx
	movslq	%ecx, %rsi
	cmpq	%rdi, (%r9,%rsi,8)
	jnb	.L25
	movl	%ecx, %eax
	leal	1(%rcx), %r8d
.L21:
	cmpl	%edx, %r8d
	jl	.L22
	movslq	%eax, %rdx
	cmpq	%rdi, (%r9,%rdx,8)
	adcl	$-1, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L25:
	movl	%ecx, %edx
	jmp	.L21
	.cfi_endproc
.LFE55:
	.size	nibutan, .-nibutan
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"%llu\n"
.LC1:
	.string	"%llu%c"
	.text
	.p2align 4
	.globl	solve
	.type	solve, @function
solve:
.LFB56:
	.cfi_startproc
	endbr64
	movq	m(%rip), %rsi
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	movabsq	$-6640827866535438581, %rcx
	movq	$50, n(%rip)
	movq	%rsi, %rdx
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	shrq	%rdx
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	leaq	a(%rip), %rbx
	movq	%rdx, %rax
	mulq	%rcx
	shrq	$4, %rdx
	leaq	(%rdx,%rdx,4), %rax
	movq	%rdx, %rcx
	leaq	(%rax,%rax,4), %rax
	addq	$49, %rcx
	addq	%rax, %rax
	subq	%rax, %rsi
	xorl	%eax, %eax
	subq	%rsi, %rcx
	movq	%rsi, %rdx
	leaq	51(%rcx), %rsi
	.p2align 4,,10
	.p2align 3
.L30:
	cmpq	%rax, %rdx
	jbe	.L27
.L40:
	movq	%rsi, (%rbx,%rax,8)
	addq	$1, %rax
	cmpq	%rax, %rdx
	ja	.L40
.L27:
	movq	%rcx, (%rbx,%rax,8)
	addq	$1, %rax
	cmpq	$50, %rax
	jne	.L30
	movl	$50, %edx
	leaq	.LC0(%rip), %rsi
	movl	$1, %edi
	xorl	%eax, %eax
	call	__printf_chk@PLT
	movq	n(%rip), %rax
	xorl	%edx, %edx
	leaq	.LC1(%rip), %r12
	testq	%rax, %rax
	jne	.L31
	jmp	.L36
	.p2align 4,,10
	.p2align 3
.L41:
	movq	%rbp, %rdx
.L31:
	leaq	1(%rdx), %rbp
	movl	$10, %ecx
	movq	(%rbx,%rdx,8), %rdx
	cmpq	%rbp, %rax
	je	.L39
	movl	$32, %ecx
.L39:
	movq	%r12, %rsi
	movl	$1, %edi
	xorl	%eax, %eax
	call	__printf_chk@PLT
	movq	n(%rip), %rax
	cmpq	%rbp, %rax
	ja	.L41
.L36:
	popq	%rbx
	.cfi_def_cfa_offset 24
	xorl	%eax, %eax
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE56:
	.size	solve, .-solve
	.section	.rodata.str1.1
.LC2:
	.string	"%llu"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB57:
	.cfi_startproc
	endbr64
	subq	$8, %rsp
	.cfi_def_cfa_offset 16
	leaq	m(%rip), %rsi
	leaq	.LC2(%rip), %rdi
	xorl	%eax, %eax
	call	__isoc99_scanf@PLT
	xorl	%eax, %eax
	call	solve
	xorl	%eax, %eax
	addq	$8, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE57:
	.size	main, .-main
	.globl	b
	.bss
	.align 32
	.type	b, @object
	.size	b, 400
b:
	.zero	400
	.globl	a
	.align 32
	.type	a, @object
	.size	a, 400
a:
	.zero	400
	.globl	m
	.align 8
	.type	m, @object
	.size	m, 8
m:
	.zero	8
	.globl	n
	.align 8
	.type	n, @object
	.size	n, 8
n:
	.zero	8
	.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>
#include <stdlib.h>
#include <string.h>

#define BIG 2000000007

#define MOD 1000000007
typedef unsigned long long ull;
typedef   signed long long sll;


#define N_MAX 50
#define M_MAX 200000

ull n, m;
ull a[N_MAX];
ull b[N_MAX];

void swap_adj(ull *a, ull *b){
	ull tmp = *b;
	*b = *a;
	*a = tmp;
	return;
}

int comp(const void *a, const void *b){
	if (*(ull*)a < *(ull*)b) {
		return -1;
	} else if (*(ull*)a > *(ull*)b) {
		return +1;
	} else {
		return 0;
	}
}

ull divide(ull a, ull b){
	ull x = MOD - 2;
	ull ans = 1;
	while (x) {
		if (x & 1) ans = (ans * b) % MOD;
		b = (b * b) % MOD;
		x /= 2;
	}
	return (a * ans) % MOD;
}

int digits(ull x){
	int i = 1;
	while (x >= 10) {
		x /= 10;
		i++;
	}
	return i;
}

int nibutan(ull x, int begin, int end){
	while (begin + 1 < end) {
		int med = (begin + end) / 2;
		if (b[med] < x) {
			begin = med;
		} else {
			end = med;
		}
	}
	if (b[begin] < x) {
		return begin;
	} else {
		return begin - 1;
	}
}

int solve(){
	int i, j;
	ull x, y;

	n = 50;

	x = (n - 1) + m / n;
	y = m % n;

	for (i = 0; i < n; i++) {
		if (i < y) {
			a[i] = x + (n - y + 1);
		} else {
			a[i] = x - y;
		}
	}

	printf("%llu\n", n);
	for (i = 0; i < n; i++) {
		printf("%llu%c", a[i], ((i + 1 == n) ? '\n' : ' '));
	}

	return 0;
}

int main(void){
	ull i;

	scanf("%llu", &m);

	solve();

	return 0;
}

-1
 4
 2307894359683
 8
 -2
 -4
 -3
 3500144313336
 15
 7

50
368934881474191117 368934881474191117 368934881474191117 368934881474191117 368934881474191117 368934881474191117 368934881474191117 368934881474191117 368934881474191117 368934881474191117 368934881474191117 368934881474191117 368934881474191117 368934881474191117 368934881474191117 368934881474191066 368934881474191066 368934881474191066 368934881474191066 368934881474191066 368934881474191066 368934881474191066 368934881474191066 368934881474191066 368934881474191066 368934881474191066 368934881474191066 368934881474191066 368934881474191066 368934881474191066 368934881474191066 368934881474191066 368934881474191066 368934881474191066 368934881474191066 368934881474191066 368934881474191066 368934881474191066 368934881474191066 368934881474191066 368934881474191066 368934881474191066 368934881474191066 368934881474191066 368934881474191066 368934881474191066 368934881474191066 368934881474191066 368934881474191066 368934881474191066
 50
96 96 96 96 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45
 50
46157887260 46157887260 46157887260 46157887260 46157887260 46157887260 46157887260 46157887260 46157887260 46157887260 46157887260 46157887260 46157887260 46157887260 46157887260 46157887260 46157887260 46157887260 46157887260 46157887260 46157887260 46157887260 46157887260 46157887260 46157887260 46157887260 46157887260 46157887260 46157887260 46157887260 46157887260 46157887260 46157887260 46157887209 46157887209 46157887209 46157887209 46157887209 46157887209 46157887209 46157887209 46157887209 46157887209 46157887209 46157887209 46157887209 46157887209 46157887209 46157887209 46157887209
 50
92 92 92 92 92 92 92 92 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41
 50
368934881474191118 368934881474191118 368934881474191118 368934881474191118 368934881474191118 368934881474191118 368934881474191118 368934881474191118 368934881474191118 368934881474191118 368934881474191118 368934881474191118 368934881474191118 368934881474191118 368934881474191067 368934881474191067 368934881474191067 368934881474191067 368934881474191067 368934881474191067 368934881474191067 368934881474191067 368934881474191067 368934881474191067 368934881474191067 368934881474191067 368934881474191067 368934881474191067 368934881474191067 368934881474191067 368934881474191067 368934881474191067 368934881474191067 368934881474191067 368934881474191067 368934881474191067 368934881474191067 368934881474191067 368934881474191067 368934881474191067 368934881474191067 368934881474191067 368934881474191067 368934881474191067 368934881474191067 368934881474191067 368934881474191067 368934881474191067 368934881474191067 368934881474191067
 50
368934881474191120 368934881474191120 368934881474191120 368934881474191120 368934881474191120 368934881474191120 368934881474191120 368934881474191120 368934881474191120 368934881474191120 368934881474191120 368934881474191120 368934881474191069 368934881474191069 368934881474191069 368934881474191069 368934881474191069 368934881474191069 368934881474191069 368934881474191069 368934881474191069 368934881474191069 368934881474191069 368934881474191069 368934881474191069 368934881474191069 368934881474191069 368934881474191069 368934881474191069 368934881474191069 368934881474191069 368934881474191069 368934881474191069 368934881474191069 368934881474191069 368934881474191069 368934881474191069 368934881474191069 368934881474191069 368934881474191069 368934881474191069 368934881474191069 368934881474191069 368934881474191069 368934881474191069 368934881474191069 368934881474191069 368934881474191069 368934881474191069 368934881474191069
 50
368934881474191119 368934881474191119 368934881474191119 368934881474191119 368934881474191119 368934881474191119 368934881474191119 368934881474191119 368934881474191119 368934881474191119 368934881474191119 368934881474191119 368934881474191119 368934881474191068 368934881474191068 368934881474191068 368934881474191068 368934881474191068 368934881474191068 368934881474191068 368934881474191068 368934881474191068 368934881474191068 368934881474191068 368934881474191068 368934881474191068 368934881474191068 368934881474191068 368934881474191068 368934881474191068 368934881474191068 368934881474191068 368934881474191068 368934881474191068 368934881474191068 368934881474191068 368934881474191068 368934881474191068 368934881474191068 368934881474191068 368934881474191068 368934881474191068 368934881474191068 368934881474191068 368934881474191068 368934881474191068 368934881474191068 368934881474191068 368934881474191068 368934881474191068
 50
70002886330 70002886330 70002886330 70002886330 70002886330 70002886330 70002886330 70002886330 70002886330 70002886330 70002886330 70002886330 70002886330 70002886330 70002886330 70002886330 70002886330 70002886330 70002886330 70002886330 70002886330 70002886330 70002886330 70002886330 70002886330 70002886330 70002886330 70002886330 70002886330 70002886330 70002886330 70002886330 70002886330 70002886330 70002886330 70002886330 70002886279 70002886279 70002886279 70002886279 70002886279 70002886279 70002886279 70002886279 70002886279 70002886279 70002886279 70002886279 70002886279 70002886279
 50
85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34
 50
93 93 93 93 93 93 93 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42

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>
#include <stdlib.h>
#include <string.h>

#define BIG 2000000007

#define MOD 1000000007
typedef unsigned long long ull;
typedef   signed long long sll;


#define N_MAX 50
#define M_MAX 200000

ull n, m;
ull a[N_MAX];
ull b[N_MAX];

void swap_adj(ull *a, ull *b){
	ull tmp = *b;
	*b = *a;
	*a = tmp;
	return;
}

int comp(const void *a, const void *b){
	if (*(ull*)a < *(ull*)b) {
		return -1;
	} else if (*(ull*)a > *(ull*)b) {
		return +1;
	} else {
		return 0;
	}
}

ull divide(ull a, ull b){
	ull x = MOD - 2;
	ull ans = 1;
	while (x) {
		if (x & 1) ans = (ans * b) % MOD;
		b = (b * b) % MOD;
		x /= 2;
	}
	return (a * ans) % MOD;
}

int digits(ull x){
	int i = 1;
	while (x >= 10) {
		x /= 10;
		i++;
	}
	return i;
}

int nibutan(ull x, int begin, int end){
	while (begin + 1 < end) {
		int med = (begin + end) / 2;
		if (b[med] < x) {
			begin = med;
		} else {
			end = med;
		}
	}
	if (b[begin] < x) {
		return begin;
	} else {
		return begin - 1;
	}
}

int solve(){
	int i, j;
	ull x, y;

	n = 50;

	x = (n - 1) + m / n;
	y = m % n;

	for (i = 0; i < n; i++) {
		if (i < y) {
			a[i] = x + (n - y + 1);
		} else {
			a[i] = x - y;
		}
	}

	printf("%llu\n", n);
	for (i = 0; i < n; i++) {
		printf("%llu%c", a[i], ((i + 1 == n) ? '\n' : ' '));
	}

	return 0;
}

int main(void){
	ull i;

	scanf("%llu", &m);

	solve();

	return 0;
}
```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.globl	n
	.bss
	.align 8
	.type	n, @object
	.size	n, 8
n:
	.zero	8
	.globl	m
	.align 8
	.type	m, @object
	.size	m, 8
m:
	.zero	8
	.globl	a
	.align 32
	.type	a, @object
	.size	a, 400
a:
	.zero	400
	.globl	b
	.align 32
	.type	b, @object
	.size	b, 400
b:
	.zero	400
	.text
	.globl	swap_adj
	.type	swap_adj, @function
swap_adj:
.LFB6:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movq	%rdi, -24(%rbp)
	movq	%rsi, -32(%rbp)
	movq	-32(%rbp), %rax
	movq	(%rax), %rax
	movq	%rax, -8(%rbp)
	movq	-24(%rbp), %rax
	movq	(%rax), %rdx
	movq	-32(%rbp), %rax
	movq	%rdx, (%rax)
	movq	-24(%rbp), %rax
	movq	-8(%rbp), %rdx
	movq	%rdx, (%rax)
	nop
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	swap_adj, .-swap_adj
	.globl	comp
	.type	comp, @function
comp:
.LFB7:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movq	%rdi, -8(%rbp)
	movq	%rsi, -16(%rbp)
	movq	-8(%rbp), %rax
	movq	(%rax), %rdx
	movq	-16(%rbp), %rax
	movq	(%rax), %rax
	cmpq	%rax, %rdx
	jnb	.L4
	movl	$-1, %eax
	jmp	.L5
.L4:
	movq	-8(%rbp), %rax
	movq	(%rax), %rdx
	movq	-16(%rbp), %rax
	movq	(%rax), %rax
	cmpq	%rax, %rdx
	jbe	.L6
	movl	$1, %eax
	jmp	.L5
.L6:
	movl	$0, %eax
.L5:
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	comp, .-comp
	.globl	divide
	.type	divide, @function
divide:
.LFB8:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movq	%rdi, -24(%rbp)
	movq	%rsi, -32(%rbp)
	movq	$1000000005, -16(%rbp)
	movq	$1, -8(%rbp)
	jmp	.L8
.L10:
	movq	-16(%rbp), %rax
	andl	$1, %eax
	testq	%rax, %rax
	je	.L9
	movq	-8(%rbp), %rax
	imulq	-32(%rbp), %rax
	movq	%rax, %rcx
	movabsq	$-8543223828751151131, %rdx
	movq	%rcx, %rax
	mulq	%rdx
	movq	%rdx, %rax
	shrq	$29, %rax
	movq	%rax, -8(%rbp)
	movq	-8(%rbp), %rax
	imulq	$1000000007, %rax, %rdx
	movq	%rcx, %rax
	subq	%rdx, %rax
	movq	%rax, -8(%rbp)
.L9:
	movq	-32(%rbp), %rax
	imulq	%rax, %rax
	movq	%rax, %rcx
	movabsq	$-8543223828751151131, %rdx
	movq	%rcx, %rax
	mulq	%rdx
	movq	%rdx, %rax
	shrq	$29, %rax
	movq	%rax, -32(%rbp)
	movq	-32(%rbp), %rax
	imulq	$1000000007, %rax, %rdx
	movq	%rcx, %rax
	subq	%rdx, %rax
	movq	%rax, -32(%rbp)
	movq	-16(%rbp), %rax
	shrq	%rax
	movq	%rax, -16(%rbp)
.L8:
	cmpq	$0, -16(%rbp)
	jne	.L10
	movq	-24(%rbp), %rax
	imulq	-8(%rbp), %rax
	movq	%rax, %rcx
	movabsq	$-8543223828751151131, %rdx
	movq	%rcx, %rax
	mulq	%rdx
	movq	%rdx, %rax
	shrq	$29, %rax
	imulq	$1000000007, %rax, %rdx
	movq	%rcx, %rax
	subq	%rdx, %rax
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	divide, .-divide
	.globl	digits
	.type	digits, @function
digits:
.LFB9:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movq	%rdi, -24(%rbp)
	movl	$1, -4(%rbp)
	jmp	.L13
.L14:
	movq	-24(%rbp), %rax
	movabsq	$-3689348814741910323, %rdx
	mulq	%rdx
	movq	%rdx, %rax
	shrq	$3, %rax
	movq	%rax, -24(%rbp)
	addl	$1, -4(%rbp)
.L13:
	cmpq	$9, -24(%rbp)
	ja	.L14
	movl	-4(%rbp), %eax
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	digits, .-digits
	.globl	nibutan
	.type	nibutan, @function
nibutan:
.LFB10:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movq	%rdi, -24(%rbp)
	movl	%esi, -28(%rbp)
	movl	%edx, -32(%rbp)
	jmp	.L17
.L19:
	movl	-28(%rbp), %edx
	movl	-32(%rbp), %eax
	addl	%edx, %eax
	movl	%eax, %edx
	shrl	$31, %edx
	addl	%edx, %eax
	sarl	%eax
	movl	%eax, -4(%rbp)
	movl	-4(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	leaq	b(%rip), %rax
	movq	(%rdx,%rax), %rax
	cmpq	%rax, -24(%rbp)
	jbe	.L18
	movl	-4(%rbp), %eax
	movl	%eax, -28(%rbp)
	jmp	.L17
.L18:
	movl	-4(%rbp), %eax
	movl	%eax, -32(%rbp)
.L17:
	movl	-28(%rbp), %eax
	addl	$1, %eax
	cmpl	%eax, -32(%rbp)
	jg	.L19
	movl	-28(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	leaq	b(%rip), %rax
	movq	(%rdx,%rax), %rax
	cmpq	%rax, -24(%rbp)
	jbe	.L20
	movl	-28(%rbp), %eax
	jmp	.L21
.L20:
	movl	-28(%rbp), %eax
	subl	$1, %eax
.L21:
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	nibutan, .-nibutan
	.section	.rodata
.LC0:
	.string	"%llu\n"
.LC1:
	.string	"%llu%c"
	.text
	.globl	solve
	.type	solve, @function
solve:
.LFB11:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$32, %rsp
	movq	$50, n(%rip)
	movq	m(%rip), %rax
	movq	n(%rip), %rsi
	movl	$0, %edx
	divq	%rsi
	movq	%rax, %rdx
	movq	n(%rip), %rax
	addq	%rdx, %rax
	subq	$1, %rax
	movq	%rax, -16(%rbp)
	movq	m(%rip), %rax
	movq	n(%rip), %rcx
	movl	$0, %edx
	divq	%rcx
	movq	%rdx, -8(%rbp)
	movl	$0, -20(%rbp)
	jmp	.L23
.L26:
	movl	-20(%rbp), %eax
	cltq
	cmpq	%rax, -8(%rbp)
	jbe	.L24
	movq	n(%rip), %rax
	subq	-8(%rbp), %rax
	movq	%rax, %rdx
	movq	-16(%rbp), %rax
	addq	%rdx, %rax
	leaq	1(%rax), %rcx
	movl	-20(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	leaq	a(%rip), %rax
	movq	%rcx, (%rdx,%rax)
	jmp	.L25
.L24:
	movq	-16(%rbp), %rax
	subq	-8(%rbp), %rax
	movl	-20(%rbp), %edx
	movslq	%edx, %rdx
	leaq	0(,%rdx,8), %rcx
	leaq	a(%rip), %rdx
	movq	%rax, (%rcx,%rdx)
.L25:
	addl	$1, -20(%rbp)
.L23:
	movl	-20(%rbp), %eax
	movslq	%eax, %rdx
	movq	n(%rip), %rax
	cmpq	%rax, %rdx
	jb	.L26
	movq	n(%rip), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	printf@PLT
	movl	$0, -20(%rbp)
	jmp	.L27
.L30:
	movl	-20(%rbp), %eax
	addl	$1, %eax
	movslq	%eax, %rdx
	movq	n(%rip), %rax
	cmpq	%rax, %rdx
	jne	.L28
	movl	$10, %ecx
	jmp	.L29
.L28:
	movl	$32, %ecx
.L29:
	movl	-20(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	leaq	a(%rip), %rax
	movq	(%rdx,%rax), %rax
	movl	%ecx, %edx
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	printf@PLT
	addl	$1, -20(%rbp)
.L27:
	movl	-20(%rbp), %eax
	movslq	%eax, %rdx
	movq	n(%rip), %rax
	cmpq	%rax, %rdx
	jb	.L30
	movl	$0, %eax
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	solve, .-solve
	.section	.rodata
.LC2:
	.string	"%llu"
	.text
	.globl	main
	.type	main, @function
main:
.LFB12:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	leaq	m(%rip), %rax
	movq	%rax, %rsi
	leaq	.LC2(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	movl	$0, %eax
	call	solve
	movl	$0, %eax
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.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	n
	.bss
	.align 8
	.type	n, @object
	.size	n, 8
n:
	.zero	8
	.globl	m
	.align 8
	.type	m, @object
	.size	m, 8
m:
	.zero	8
	.globl	a
	.align 32
	.type	a, @object
	.size	a, 400
a:
	.zero	400
	.globl	b
	.align 32
	.type	b, @object
	.size	b, 400
b:
	.zero	400
	.text
	.globl	swap_adj
	.type	swap_adj, @function
swap_adj:
.LFB6:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movq	%rdi, -24(%rbp)
	movq	%rsi, -32(%rbp)
	movq	-32(%rbp), %rax
	movq	(%rax), %rax
	movq	%rax, -8(%rbp)
	movq	-24(%rbp), %rax
	movq	(%rax), %rdx
	movq	-32(%rbp), %rax
	movq	%rdx, (%rax)
	movq	-24(%rbp), %rax
	movq	-8(%rbp), %rdx
	movq	%rdx, (%rax)
	nop
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	swap_adj, .-swap_adj
	.globl	comp
	.type	comp, @function
comp:
.LFB7:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movq	%rdi, -8(%rbp)
	movq	%rsi, -16(%rbp)
	movq	-8(%rbp), %rax
	movq	(%rax), %rdx
	movq	-16(%rbp), %rax
	movq	(%rax), %rax
	cmpq	%rax, %rdx
	jnb	.L4
	movl	$-1, %eax
	jmp	.L5
.L4:
	movq	-8(%rbp), %rax
	movq	(%rax), %rdx
	movq	-16(%rbp), %rax
	movq	(%rax), %rax
	cmpq	%rax, %rdx
	jbe	.L6
	movl	$1, %eax
	jmp	.L5
.L6:
	movl	$0, %eax
.L5:
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	comp, .-comp
	.globl	divide
	.type	divide, @function
divide:
.LFB8:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movq	%rdi, -24(%rbp)
	movq	%rsi, -32(%rbp)
	movq	$1000000005, -16(%rbp)
	movq	$1, -8(%rbp)
	jmp	.L8
.L10:
	movq	-16(%rbp), %rax
	andl	$1, %eax
	testq	%rax, %rax
	je	.L9
	movq	-8(%rbp), %rax
	imulq	-32(%rbp), %rax
	movq	%rax, %rcx
	movabsq	$-8543223828751151131, %rdx
	movq	%rcx, %rax
	mulq	%rdx
	movq	%rdx, %rax
	shrq	$29, %rax
	movq	%rax, -8(%rbp)
	movq	-8(%rbp), %rax
	imulq	$1000000007, %rax, %rdx
	movq	%rcx, %rax
	subq	%rdx, %rax
	movq	%rax, -8(%rbp)
.L9:
	movq	-32(%rbp), %rax
	imulq	%rax, %rax
	movq	%rax, %rcx
	movabsq	$-8543223828751151131, %rdx
	movq	%rcx, %rax
	mulq	%rdx
	movq	%rdx, %rax
	shrq	$29, %rax
	movq	%rax, -32(%rbp)
	movq	-32(%rbp), %rax
	imulq	$1000000007, %rax, %rdx
	movq	%rcx, %rax
	subq	%rdx, %rax
	movq	%rax, -32(%rbp)
	movq	-16(%rbp), %rax
	shrq	%rax
	movq	%rax, -16(%rbp)
.L8:
	cmpq	$0, -16(%rbp)
	jne	.L10
	movq	-24(%rbp), %rax
	imulq	-8(%rbp), %rax
	movq	%rax, %rcx
	movabsq	$-8543223828751151131, %rdx
	movq	%rcx, %rax
	mulq	%rdx
	movq	%rdx, %rax
	shrq	$29, %rax
	imulq	$1000000007, %rax, %rdx
	movq	%rcx, %rax
	subq	%rdx, %rax
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	divide, .-divide
	.globl	digits
	.type	digits, @function
digits:
.LFB9:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movq	%rdi, -24(%rbp)
	movl	$1, -4(%rbp)
	jmp	.L13
.L14:
	movq	-24(%rbp), %rax
	movabsq	$-3689348814741910323, %rdx
	mulq	%rdx
	movq	%rdx, %rax
	shrq	$3, %rax
	movq	%rax, -24(%rbp)
	addl	$1, -4(%rbp)
.L13:
	cmpq	$9, -24(%rbp)
	ja	.L14
	movl	-4(%rbp), %eax
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	digits, .-digits
	.globl	nibutan
	.type	nibutan, @function
nibutan:
.LFB10:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movq	%rdi, -24(%rbp)
	movl	%esi, -28(%rbp)
	movl	%edx, -32(%rbp)
	jmp	.L17
.L19:
	movl	-28(%rbp), %edx
	movl	-32(%rbp), %eax
	addl	%edx, %eax
	movl	%eax, %edx
	shrl	$31, %edx
	addl	%edx, %eax
	sarl	%eax
	movl	%eax, -4(%rbp)
	movl	-4(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	leaq	b(%rip), %rax
	movq	(%rdx,%rax), %rax
	cmpq	%rax, -24(%rbp)
	jbe	.L18
	movl	-4(%rbp), %eax
	movl	%eax, -28(%rbp)
	jmp	.L17
.L18:
	movl	-4(%rbp), %eax
	movl	%eax, -32(%rbp)
.L17:
	movl	-28(%rbp), %eax
	addl	$1, %eax
	cmpl	%eax, -32(%rbp)
	jg	.L19
	movl	-28(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	leaq	b(%rip), %rax
	movq	(%rdx,%rax), %rax
	cmpq	%rax, -24(%rbp)
	jbe	.L20
	movl	-28(%rbp), %eax
	jmp	.L21
.L20:
	movl	-28(%rbp), %eax
	subl	$1, %eax
.L21:
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	nibutan, .-nibutan
	.section	.rodata
.LC0:
	.string	"%llu\n"
.LC1:
	.string	"%llu%c"
	.text
	.globl	solve
	.type	solve, @function
solve:
.LFB11:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$32, %rsp
	movq	$50, n(%rip)
	movq	m(%rip), %rax
	movq	n(%rip), %rsi
	movl	$0, %edx
	divq	%rsi
	movq	%rax, %rdx
	movq	n(%rip), %rax
	addq	%rdx, %rax
	subq	$1, %rax
	movq	%rax, -16(%rbp)
	movq	m(%rip), %rax
	movq	n(%rip), %rcx
	movl	$0, %edx
	divq	%rcx
	movq	%rdx, -8(%rbp)
	movl	$0, -20(%rbp)
	jmp	.L23
.L26:
	movl	-20(%rbp), %eax
	cltq
	cmpq	%rax, -8(%rbp)
	jbe	.L24
	movq	n(%rip), %rax
	subq	-8(%rbp), %rax
	movq	%rax, %rdx
	movq	-16(%rbp), %rax
	addq	%rdx, %rax
	leaq	1(%rax), %rcx
	movl	-20(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	leaq	a(%rip), %rax
	movq	%rcx, (%rdx,%rax)
	jmp	.L25
.L24:
	movq	-16(%rbp), %rax
	subq	-8(%rbp), %rax
	movl	-20(%rbp), %edx
	movslq	%edx, %rdx
	leaq	0(,%rdx,8), %rcx
	leaq	a(%rip), %rdx
	movq	%rax, (%rcx,%rdx)
.L25:
	addl	$1, -20(%rbp)
.L23:
	movl	-20(%rbp), %eax
	movslq	%eax, %rdx
	movq	n(%rip), %rax
	cmpq	%rax, %rdx
	jb	.L26
	movq	n(%rip), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	printf@PLT
	movl	$0, -20(%rbp)
	jmp	.L27
.L30:
	movl	-20(%rbp), %eax
	addl	$1, %eax
	movslq	%eax, %rdx
	movq	n(%rip), %rax
	cmpq	%rax, %rdx
	jne	.L28
	movl	$10, %ecx
	jmp	.L29
.L28:
	movl	$32, %ecx
.L29:
	movl	-20(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	leaq	a(%rip), %rax
	movq	(%rdx,%rax), %rax
	movl	%ecx, %edx
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	printf@PLT
	addl	$1, -20(%rbp)
.L27:
	movl	-20(%rbp), %eax
	movslq	%eax, %rdx
	movq	n(%rip), %rax
	cmpq	%rax, %rdx
	jb	.L30
	movl	$0, %eax
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	solve, .-solve
	.section	.rodata
.LC2:
	.string	"%llu"
	.text
	.globl	main
	.type	main, @function
main:
.LFB12:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	leaq	m(%rip), %rax
	movq	%rax, %rsi
	leaq	.LC2(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	movl	$0, %eax
	call	solve
	movl	$0, %eax
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.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:
