output_description: If the total value of N bills cannot be Y yen, print `-1 -1 -1`.
  
  If the total value of N bills can be Y yen, let one such set of bills be "x
  10000-yen bills, y 5000-yen bills and z 1000-yen bills", and print x, y, z
  with spaces in between. If there are multiple possibilities, any of them may
  be printed.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N Y
attempt: def isValidNumOfBill(x, y, z, N):
      return x + y + z == N
  
  
  def isValidSumOfMoney(x, y, z, Y):
      return 10000 * x + 5000 * y + 1000 * z == Y
  
  
  def outputResult(x, y, z):
      print("{x:d} {y:d} {z:d}".format(x=x, y=y, z=z))
  
  
  def outputFailure():
      print("-1 -1 -1")
  
  
  def searchA(N, Y):
      # define range
      xlim = range(0, Y // 10000 + 1)
      ylim = range(0, Y // 5000 + 1)
      zlim = range(0, Y // 1000 + 1)
  
      for x in xlim:
          for y in ylim:
              for z in zlim:
                  # print(x, y, z)
                  if not isValidNumOfBill(x, y, z, N):
                      continue
                  if isValidSumOfMoney(x, y, z, Y):
                      return (x, y, z)
  
  
  def searchB(N, Y):
      # 最初に金額を合わせる
      calcX = lambda Y: Y // 10000
      calcY = lambda x, Y: (Y - 10000 * x) // 5000
      calcZ = lambda x, y, Y: (Y - 10000 * x - 5000 * y) // 1000
      x = calcX(Y)
      y = calcY(x, Y)
      z = calcZ(x, y, Y)
  
      while x >= 0:
          while y >= 0:
              # print(x, y, z)
              if sum((x, y, z)) == N:
                  return (x, y, z)
              y -= 1
              z = calcZ(x, y, Y)
          x -= 1
          y = calcY(x, Y)
          z = calcZ(x, y, Y)
  
  
  def main():
      # read 'N Y'
      args = input().split(" ")
      N = int(args[0])
      Y = int(args[1])
  
      # search for 10000x + 5000y + 1000z = Y
      # result = searchA(N, Y)
      result = searchB(N, Y)
      if result is not None:
          x, y, z = result
          outputResult(x, y, z)
      else:
          outputFailure()
  
  
  if __name__ == "__main__":
      main()
  
problem_description: Statement
  
  The commonly used bills in Japan are 10000-yen, 5000-yen and 1000-yen bills.
  Below, the word "bill" refers to only these.
  
  According to Aohashi, he received an otoshidama (New Year money gift) envelope
  from his grandfather that contained N bills for a total of Y yen, but he may
  be lying. Determine whether such a situation is possible, and if it is, find a
  possible set of bills contained in the envelope. Assume that his grandfather
  is rich enough, and the envelope was large enough.
samples: [{"input": "9 45000", "output": "4 0 5\n    \n\nIf the envelope contained 4 10000-yen bills and 5 1000-yen bills, he had 9\nbills and 45000 yen in total. It is also possible that the envelope contained\n9 5000-yen bills, so the output `0 9 0` is also correct.\n\n* * *"}, {"input": "20 196000", "output": "-1 -1 -1\n    \n\nWhen the envelope contained 20 bills in total, the total value would be 200000\nyen if all the bills were 10000-yen bills, and would be at most 195000 yen\notherwise, so it would never be 196000 yen.\n\n* * *"}, {"input": "1000 1234000", "output": "14 27 959\n    \n\nThere are also many other possibilities.\n\n* * *"}, {"input": "2000 20000000", "output": "2000 0 0"}]