import algorithm, math, strutils, sequtils, tables, macros let read* = iterator: string {.closure.} = while true: (for s in stdin.readLine.split: yield s) template input*(T: static[typedesc]): untyped = when T is int: read().parseInt elif T is float: read().parseFloat elif T is string: read() macro dump*(arg: varargs[untyped]): untyped = result = newNimNode(nnkStmtList) for x in arg: let name = toStrLit(x) result.add(quote do: stderr.write `name`, " = " , `x`, ", ") result.add(quote do: stderr.write "\n") var N, X, Y, Z = input(int) var A = @[-1 * 10 ^ 18] & newSeqWith(N, input(int)) & @[10 ^ 18] for i in 1 .. N: if A[i] >= 10000: let K = min(A[i] div 10000, Z) A[i] -= K * 10000 Z -= K for i in 1 .. N: if A[i] >= 5000: let K = min(A[i] div 5000, Y) A[i] -= K * 5000 Y -= K A.sort(cmp, Descending) for i in 1 .. Z: A[i] -= 10000 A.sort(cmp, Descending) for i in 1 .. Y: A[i] -= 5000 for i in 1 .. N: while A[i] >= 0 and X > 0: A[i] -= 1000 dec X if A[1 .. N].filterIt(it >= 0).len == 0: echo "Yes" else: echo "No"