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 gen_range(N, Y, reverse=False):
      for i in range(N, 0 - 1, -1):
          for j in range(N - i + 1):
              if reverse and i * 10000 + j * 1000 < Y:
                  break
              elif reverse is False and i * 1000 + j * 10000 > Y:
                  break
              for k in range(N - i - j + 1):
                  if reverse:
                      yield (j, i, k)
                  else:
                      yield (i, j, k)
  
  
  def calc(N, Y):
      if 10000 * N < Y or Y < 1000 * N:
          return [-1, -1, -1]
      if Y % 10000 == 0 and Y // 10000 == N:
          return (Y // 10000, 0, 0)
      if Y % 5000 == 0 and Y // 5000 == N:
          return (0, Y // 5000, 0)
      if Y % 1000 == 0 and Y // 1000 == N:
          return (0, 0, Y // 1000)
      if (Y - 1000 * N) % 4000 == 0:
          k5 = (Y - 1000 * N) // 4000
          if k5 >= 0 and N - k5 >= 0:
              return [0, k5, N - k5]
      elif (Y - 1000 * N) % 9000 == 0:
          k10 = (Y - 1000 * N) // 9000
          if k10 >= 0 and N - k10 >= 0:
              return [k10, 0, N - k10]
      if 5000 * N < Y:
          for k10, k1, k5 in gen_range(N, Y, reverse=True):
              if k10 * 10000 + k1 * 1000 + k5 * 5000 == Y:
                  return (k10, k5, k1)
      #
      # for k1 in range(N, 0 - 1, -1):
      #     for k10 in range(N - k1 + 1):
      #         if k1 * 1000 + k10 * 10000 > Y:
      #             break
      #         for k5 in range(N - k1 - k10 + 1):
      #             print(k10, k5, k1)
      #             if k1 * 1000 + k5 * 5000 + k10 * 10000 == Y:
      #                 return [k10, k5, k1]
      return (-1, -1, -1)
  
  
  def main():
      N, Y = list(map(int, input().split()))
      print(*calc(N, Y))
  
  
  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"}]