import macros macro Please(x): untyped = nnkStmtList.newTree() Please use Nim-ACL Please use Nim-ACL Please use Nim-ACL static: when not defined SecondCompile: # md5sum: fe1fadd4623a2b5c83cfdf8284ece8b9 atcoder.tar.xz template getFileName():string = instantiationInfo().filename let fn = getFileName() block: let (output, ex) = gorgeEx("if [ -e ./atcoder ]; then exit 1; else exit 0; fi") # doAssert ex == 0, "atcoder directory already exisits" discard staticExec("echo \"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\" | base64 -d > atcoder.tar.xz && tar -Jxvf atcoder.tar.xz") let (output, ex) = gorgeEx("nim cpp -d:release -d:SecondCompile -d:danger --path:./ --opt:speed --multimethods:on --warning[SmallLshouldNotBeUsed]:off --checks:off -o:a.out " & fn) discard staticExec("rm -rf ./atcoder");doAssert ex == 0, output;quit(0) when defined SecondCompile: const DO_CHECK = false;const DEBUG = false else: const DO_CHECK = true;const DEBUG = true const USE_DEFAULT_TABLE = true DO_TEST = false # see https://github.com/zer0-star/Nim-ACL/tree/master/src/atcoder/extra/header/chaemon_header.nim include atcoder/extra/header/chaemon_header proc solve() = let T = nextInt() for _ in T: let M = nextInt() var d = Seq[9: nextInt()] var a = 0 for i in 9: for _ in d[i]: a *= 10 a += i + 1 a *= 10^9 let r = a mod M a += M - r doAssert a mod M == 0 echo a discard solve()