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\nwhen not declared COMPETITIVE_STD_STD_HPP:\n const COMPETITIVE_STD_STD_HPP* = 1\n const MODINT998244353* = 998244353\n const MODINT1000000007* = 1000000007\n let INF* = 100100111\n let 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 rev: int = 1\n var a = a\n var n = n\n while n > 0:\n if n % 2 != 0:\n rev = (rev * a) mod m\n if n > 1:\n a = (a * a) mod m\n n >>= 1\n return rev\n proc sqrt*(x: int): int =\n assert(x >= 0)\n var rev = int(sqrt(float(x)))\n while rev * rev > x:\n rev += 1\n while (rev+1) * (rev+1) <= x:\n rev += 1\n return rev\n proc chmax*[T](x: var T, y: T): bool =\n if x < y:\n x = y\n return true\n return false\n proc chmin*[T](x: var T, y: T): bool =\n if x > y:\n x = y\n return true\n return false\n proc at*(x:char, a = '0'):int=int(x)-int(a)\n converter tofloat*(n:int):float = float(n)\n converter tobool*(n:int):bool = n != 0\n converter tobool*[T](a:seq[T]):bool = a.len != 0\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