import sequtils,algorithm,math,tables import sets,intsets,queues,heapqueue,bitops,strutils template times*(n:int,body) = (for _ in 0.." .} proc scan(): int = while true: let k = getchar_unlocked() if k < '0': break result = 10 * result + k.ord - '0'.ord # type # CPriorityQueue {.importcpp: "std::priority_queue", header: "".} [T] = object # proc cNewPriorityQueue(T: typedesc): CPriorityQueue[T] # {.importcpp: "std::priority_queue<'*1>()", nodecl.} # proc newPriorityQueue*[T](): CPriorityQueue[T] = cNewPriorityQueue(T) # proc size*[T](this: CPriorityQueue[T]):int {.importcpp: "#.size(@)", nodecl.} # proc push*[T](this: CPriorityQueue[T],x:T) {.importcpp: "#.push(@)", nodecl.} # proc top*[T](this: CPriorityQueue[T]): T {.importcpp: "#.top()", nodecl.} # proc pop*[T](this: CPriorityQueue[T]){.importcpp: "#.pop()", nodecl.} proc solve() : int = let n = scan() let L = newSeqWith(n,scan()).sorted(cmp) var R = @[1] for i in 1..