import macros;macro ImportExpand(s:untyped):untyped = parseStmt($s[2]) import macros macro Please(x): untyped = nnkStmtList.newTree() Please use Nim-ACL Please use Nim-ACL Please use Nim-ACL import macros # {.checks: off.} {.warning[UnusedImport]: off.} {.hint[XDeclaredButNotUsed]: off.} import os import algorithm import sequtils import tables import macros import std/math import sets import strutils import strformat import sugar import streams import deques ImportExpand "competitive/std/std.nim" <=== "import math\nimport strformat\nimport macros\nimport strutils\nimport deques\nimport heapqueue\nimport sets\nimport tables\nimport sequtils\nwhen not declared COMPETITIVE_STD_STD_HPP:\n const COMPETITIVE_STD_STD_HPP* = 1\n const MODINT998244353* = 998244353\n const MODINT1000000007* = 1000000007\n const INF* = 100100111\n const INFL* = int(3300300300300300491)\n type double* = float64\n let readNext = iterator(getsChar: bool = false): string {.closure.} =\n while true:\n var si: string\n try: si = stdin.readLine\n except EOFError: yield \"\"\n for s in si.split:\n if getsChar:\n for i in 0..>`*(x:int, y:int):int = x shr y\n proc `<<`*(x:int, y:int):int = x shl y\n proc `%=`*(x:var int, y:int):void = x = x % y\n proc `//=`*(x:var int, y:int):void = x = x // y\n proc `^=`*(x:var int, y:int):void = x = x ^ y\n proc `&=`*(x:var int, y:int):void = x = x & y\n proc `|=`*(x:var int, y:int):void = x = x | y\n proc `>>=`*(x:var int, y:int):void = x = x >> y\n proc `<<=`*(x:var int, y:int):void = x = x << y\n proc `[]`*(x:int,n:int):bool = (x and (1 shl n)) != 0\n proc pow*(a, n: int, m = INFL): int =\n var\n rev = 1\n a = a\n n = n\n while n > 0:\n if n % 2 != 0: rev = (rev * a) mod m\n if n > 1: a = (a * a) mod m\n n >>= 1\n return rev\n proc sqrt*(x: int): int =\n assert(x >= 0)\n result = int(sqrt(float64(x)))\n while result * result > x: result -= 1\n while (result+1) * (result+1) <= x: result += 1\n proc chmax*[T](x: var T, y: T): bool = (if x < y: (x = y; return true;) return false)\n proc chmin*[T](x: var T, y: T): bool = (if x > y: (x = y; return true;) return false)\n proc `max=`*[T](x: var T, y: T) = x = max(x, y)\n proc `min=`*[T](x: var T, y: T) = x = min(x, y)\n proc at*(x:char, a = '0'): int = int(x) - int(a)\n converter tofloat*(n: int): float = float(n)\n iterator range*(start:int,ends:int,step:int): int =\n var i = start\n if step < 0:\n while i > ends:\n yield i\n i += step\n elif step > 0:\n while i < ends:\n yield i\n i += step\n iterator range*(ends: int): int = (for i in 0..