.data .globl maxn .p2align 2 maxn: .word 18 .globl mod .p2align 2 mod: .word 1000000007 .bss .globl dp .p2align 2 dp: .space 52907904 .data .bss .globl list .p2align 2 list: .space 800 .data .bss .globl cns .p2align 2 cns: .space 80 .data .text .globl equal .p2align 2 equal: .L.equal.0: stp x29, x30, [sp, #-16]! mov x29, sp mov w8, w0 mov w9, w1 cmp w8, w9 b.eq .L.equal.1 b .L.equal.2 .L.equal.1: mov w8, #1 mov w0, w8 ldp x29, x30, [sp], #16 ret .L.equal.2: mov w8, #0 mov w0, w8 ldp x29, x30, [sp], #16 ret .text .globl dfs .p2align 2 dfs: .L.dfs.0: stp x29, x30, [sp, #-16]! mov x29, sp sub sp, sp, #96 str x25, [sp, #0] str x27, [sp, #8] str x26, [sp, #16] str x24, [sp, #24] str x22, [sp, #32] str x20, [sp, #40] str x23, [sp, #48] str x21, [sp, #56] str x19, [sp, #64] mov w24, w0 mov w23, w1 mov w22, w2 mov w20, w3 mov w21, w4 mov w19, w5 movz w8, #13936 movk w8, #11, lsl #16 mul w8, w24, w8 mov w9, #40824 mul w9, w23, w9 add w8, w8, w9 mov w9, #2268 mul w9, w22, w9 add w8, w8, w9 mov w9, #126 mul w9, w20, w9 add w8, w8, w9 mov w9, #7 mul w9, w21, w9 add w8, w8, w9 add w8, w8, w19 adrp x9, dp add x9, x9, :lo12:dp sxtw x8, w8 lsl x8, x8, #2 add x8, x9, x8 ldr w9, [x8] mov w8, #-1 cmp w9, w8 b.ne .L.dfs.1 b .L.dfs.2 .L.dfs.1: movz w8, #13936 movk w8, #11, lsl #16 mul w8, w24, w8 mov w9, #40824 mul w9, w23, w9 add w8, w8, w9 mov w9, #2268 mul w9, w22, w9 add w8, w8, w9 mov w9, #126 mul w9, w20, w9 add w8, w8, w9 mov w9, #7 mul w9, w21, w9 add w8, w8, w9 add w8, w8, w19 adrp x9, dp add x9, x9, :lo12:dp sxtw x8, w8 lsl x8, x8, #2 add x8, x9, x8 ldr w8, [x8] mov w0, w8 ldr x25, [sp, #0] ldr x27, [sp, #8] ldr x26, [sp, #16] ldr x24, [sp, #24] ldr x22, [sp, #32] ldr x20, [sp, #40] ldr x23, [sp, #48] ldr x21, [sp, #56] ldr x19, [sp, #64] add sp, sp, #96 ldp x29, x30, [sp], #16 ret .L.dfs.2: add w8, w24, w23 add w8, w8, w22 add w8, w8, w20 add w8, w8, w21 mov w9, #0 cmp w8, w9 b.eq .L.dfs.3 b .L.dfs.4 .L.dfs.3: mov w8, #1 mov w0, w8 ldr x25, [sp, #0] ldr x27, [sp, #8] ldr x26, [sp, #16] ldr x24, [sp, #24] ldr x22, [sp, #32] ldr x20, [sp, #40] ldr x23, [sp, #48] ldr x21, [sp, #56] ldr x19, [sp, #64] add sp, sp, #96 ldp x29, x30, [sp], #16 ret .L.dfs.4: mov w8, #0 cmp w24, w8 b.ne .L.dfs.5 mov w8, #0 mov w25, w8 b .L.dfs.10 .L.dfs.5: b .L.dfs.6 .L.dfs.6: mov w8, #2 cmp w19, w8 b.eq .L.dfs.7 b .L.dfs.8 .L.dfs.7: mov w8, #1 b .L.dfs.9 .L.dfs.8: mov w8, #0 b .L.dfs.9 .L.dfs.9: sub w25, w24, w8 mov w8, #1 sub w9, w24, w8 mov w0, w9 mov w1, w23 mov w2, w22 mov w3, w20 mov w4, w21 mov w5, w8 bl dfs mov w8, w0 mul w8, w25, w8 mov w9, #0 add w8, w9, w8 movz w9, #51719 movk w9, #15258, lsl #16 sdiv w14, w8, w9 msub w8, w14, w9, w8 mov w25, w8 b .L.dfs.10 .L.dfs.10: mov w8, #0 cmp w23, w8 b.ne .L.dfs.11 mov w27, w25 b .L.dfs.16 .L.dfs.11: b .L.dfs.12 .L.dfs.12: mov w8, #3 cmp w19, w8 b.eq .L.dfs.13 b .L.dfs.14 .L.dfs.13: mov w8, #1 b .L.dfs.15 .L.dfs.14: mov w8, #0 b .L.dfs.15 .L.dfs.15: sub w26, w23, w8 mov w8, #1 add w9, w24, w8 sub w8, w23, w8 mov w0, w9 mov w1, w8 mov w2, w22 mov w3, w20 mov w4, w21 mov w8, #2 mov w5, w8 bl dfs mov w8, w0 mul w8, w26, w8 add w8, w25, w8 movz w9, #51719 movk w9, #15258, lsl #16 sdiv w14, w8, w9 msub w8, w14, w9, w8 mov w27, w8 b .L.dfs.16 .L.dfs.16: mov w8, #0 cmp w22, w8 b.ne .L.dfs.17 mov w26, w27 b .L.dfs.22 .L.dfs.17: b .L.dfs.18 .L.dfs.18: mov w8, #4 cmp w19, w8 b.eq .L.dfs.19 b .L.dfs.20 .L.dfs.19: mov w8, #1 b .L.dfs.21 .L.dfs.20: mov w8, #0 b .L.dfs.21 .L.dfs.21: sub w25, w22, w8 mov w8, #1 add w9, w23, w8 sub w8, w22, w8 mov w0, w24 mov w1, w9 mov w2, w8 mov w3, w20 mov w4, w21 mov w8, #3 mov w5, w8 bl dfs mov w8, w0 mul w8, w25, w8 add w9, w27, w8 movz w8, #51719 movk w8, #15258, lsl #16 sdiv w14, w9, w8 msub w8, w14, w8, w9 mov w26, w8 b .L.dfs.22 .L.dfs.22: mov w8, #0 cmp w20, w8 b.ne .L.dfs.23 mov w25, w26 b .L.dfs.28 .L.dfs.23: b .L.dfs.24 .L.dfs.24: mov w8, #5 cmp w19, w8 b.eq .L.dfs.25 b .L.dfs.26 .L.dfs.25: mov w8, #1 b .L.dfs.27 .L.dfs.26: mov w8, #0 b .L.dfs.27 .L.dfs.27: sub w25, w20, w8 mov w8, #1 add w9, w22, w8 sub w8, w20, w8 mov w0, w24 mov w1, w23 mov w2, w9 mov w3, w8 mov w4, w21 mov w8, #4 mov w5, w8 bl dfs mov w8, w0 mul w8, w25, w8 add w9, w26, w8 movz w8, #51719 movk w8, #15258, lsl #16 sdiv w14, w9, w8 msub w8, w14, w8, w9 mov w25, w8 b .L.dfs.28 .L.dfs.28: mov w8, #0 cmp w21, w8 b.ne .L.dfs.29 mov w10, w25 b .L.dfs.30 .L.dfs.29: mov w8, #1 add w9, w20, w8 sub w8, w21, w8 mov w0, w24 mov w1, w23 mov w2, w22 mov w3, w9 mov w4, w8 mov w8, #5 mov w5, w8 bl dfs mov w8, w0 mul w8, w21, w8 add w9, w25, w8 movz w8, #51719 movk w8, #15258, lsl #16 sdiv w14, w9, w8 msub w8, w14, w8, w9 mov w10, w8 b .L.dfs.30 .L.dfs.30: movz w8, #13936 movk w8, #11, lsl #16 mul w9, w24, w8 mov w8, #40824 mul w8, w23, w8 add w9, w9, w8 mov w8, #2268 mul w8, w22, w8 add w9, w9, w8 mov w8, #126 mul w8, w20, w8 add w9, w9, w8 mov w8, #7 mul w8, w21, w8 add w8, w9, w8 add w8, w8, w19 movz w9, #51719 movk w9, #15258, lsl #16 sdiv w14, w10, w9 msub w9, w14, w9, w10 adrp x10, dp add x10, x10, :lo12:dp sxtw x11, w8 lsl x11, x11, #2 add x11, x10, x11 str w9, [x11] sxtw x8, w8 lsl x8, x8, #2 add x8, x10, x8 ldr w8, [x8] mov w0, w8 ldr x25, [sp, #0] ldr x27, [sp, #8] ldr x26, [sp, #16] ldr x24, [sp, #24] ldr x22, [sp, #32] ldr x20, [sp, #40] ldr x23, [sp, #48] ldr x21, [sp, #56] ldr x19, [sp, #64] add sp, sp, #96 ldp x29, x30, [sp], #16 ret .text .globl main .p2align 2 main: .L.main.0: stp x29, x30, [sp, #-16]! mov x29, sp sub sp, sp, #48 str x19, [sp, #0] str x20, [sp, #8] str x21, [sp, #16] str x22, [sp, #24] bl getint mov w19, w0 mov w8, #0 mov w9, w8 b .L.main.1 .L.main.3: mov w8, #0 mov w20, w8 .L.main.19: cmp w20, w19 b.lt .L.main.20 b .L.main.21 .L.main.20: bl getint mov w10, w0 adrp x9, list add x9, x9, :lo12:list sxtw x8, w20 lsl x8, x8, #2 add x8, x9, x8 str w10, [x8] sxtw x8, w20 lsl x8, x8, #2 add x8, x9, x8 ldr w11, [x8] sxtw x8, w20 lsl x8, x8, #2 add x8, x9, x8 ldr w9, [x8] adrp x8, cns add x8, x8, :lo12:cns sxtw x9, w9 lsl x9, x9, #2 add x9, x8, x9 ldr w9, [x9] mov w10, #1 add w9, w9, w10 sxtw x11, w11 lsl x11, x11, #2 add x8, x8, x11 str w9, [x8] add w8, w20, w10 mov w20, w8 b .L.main.19 .L.main.5: mov w10, #0 mov w11, w10 mov w10, w8 b .L.main.7 .L.main.9: mov w8, #1 add w8, w10, w8 .L.main.4: mov w10, #18 cmp w8, w10 b.lt .L.main.5 .L.main.6: mov w8, #1 add w8, w9, w8 mov w9, w8 .L.main.1: mov w8, #18 cmp w9, w8 b.lt .L.main.2 b .L.main.3 .L.main.2: mov w8, #0 b .L.main.4 .L.main.12: mov w8, #1 add w8, w11, w8 mov w11, w8 .L.main.7: mov w8, #18 cmp w11, w8 b.lt .L.main.8 b .L.main.9 .L.main.8: mov w8, #0 mov w21, w8 b .L.main.10 .L.main.14: mov w8, #0 mov w10, w8 mov w11, w22 mov w21, w9 b .L.main.16 .L.main.17: movz w8, #13936 movk w8, #11, lsl #16 mul w9, w21, w8 mov w8, #40824 mul w8, w12, w8 add w9, w9, w8 mov w8, #2268 mul w8, w20, w8 add w9, w9, w8 mov w8, #126 mul w8, w11, w8 add w9, w9, w8 mov w8, #7 mul w8, w15, w8 add w8, w9, w8 add w8, w8, w10 adrp x9, dp add x9, x9, :lo12:dp sxtw x8, w8 lsl x8, x8, #2 add x9, x9, x8 mov w8, #-1 str w8, [x9] mov w8, #1 add w8, w10, w8 mov w10, w8 .L.main.16: mov w8, #7 cmp w10, w8 b.lt .L.main.17 .L.main.18: mov w8, #1 add w8, w15, w8 mov w15, w8 mov w22, w11 mov w9, w21 .L.main.13: mov w8, #18 cmp w15, w8 b.lt .L.main.14 .L.main.15: mov w8, #1 add w8, w22, w8 mov w21, w8 mov w11, w20 mov w10, w12 .L.main.10: mov w8, #18 cmp w21, w8 b.lt .L.main.11 b .L.main.12 .L.main.11: mov w8, #0 mov w15, w8 mov w22, w21 mov w20, w11 mov w12, w10 b .L.main.13 .L.main.21: adrp x8, cns add x8, x8, :lo12:cns mov x9, #4 add x9, x8, x9 ldr w9, [x9] mov x10, #8 add x10, x8, x10 ldr w15, [x10] mov x10, #12 add x10, x8, x10 ldr w12, [x10] mov x10, #16 add x10, x8, x10 ldr w11, [x10] mov x10, #20 add x8, x8, x10 ldr w8, [x8] mov w0, w9 mov w1, w15 mov w2, w12 mov w3, w11 mov w4, w8 mov w8, #0 mov w5, w8 bl dfs mov w19, w0 mov w0, w19 bl putint mov w0, w19 ldr x19, [sp, #0] ldr x20, [sp, #8] ldr x21, [sp, #16] ldr x22, [sp, #24] add sp, sp, #48 ldp x29, x30, [sp], #16 ret