//所有算法都與數據結構的實現細節分開，並由迭代器參數化
#include <algorithm>
#define 填(下, 上, 值) fill(下, 上, 值)
#define 找(下, 上, 值) find(下, 上, 値)
#define 各(配列) for_each(全(配列), [](整 值) { 出(值) << " "; })
#define 以上(下, 上, 基準) lower_bound(下, 上, 基準)
#define 最大(下, 上) max_element(下, 上)
#define 拼(一下, 一上, 二下, 二上) merge(一下, 一上, 二下, 二上, back_inserter(果))
#define 最小(下, 上) min_element(下, 上)
#define 逆(下, 上) reverse(下, 上)
#define 理(下, 上) sort(下, 上)
#define 逆理(下, 上) sort(下, 上, greater<整>())
#define 獨(下, 上) unique(下, 上)
#define 比大(下, 上, 基準) upper_bound(下, 上, 基準)

//數學,標題提供常見的數學函數和各種宏
#include <cmath>
#define 距離(數) abs(數)
#define 切下(數) floor(數)
#define 切上(數) ceil(數)
#define 根(數) sqrt(數)
#define 單縱(角度) sin(角度)
#define 單橫(角度) cos(角度)

//標準輸入輸出
#include <iostream>
#define 入(值) cin >> 值
#define 出(值) cout << 值

//迭代器
#include <iterator>
#define 始(迭代器) (迭代器).begin()
#define 結(迭代器) (迭代器).end()
#define 全(迭代器) (迭代器).begin(), (迭代器).end()

//地圖,獨特的元件的一種關聯容器的存儲該密鑰與其相對應的值造
#include <map>
#define 計(值) count(值);

//隊列,關於先進先出隊的列類和具有優先級隊列的類
#include <queue>
#define 行(隊列) 隊列.pop()
#define 推(隊列, 值) 隊列.push(值)
#define 面(隊列) 隊列.front()

//堆,關於後進先出容器適配器
#include <stack>
#define 上(容器) 容器.top()

//集,表示一組關聯容器,二叉樹
#include <set>
//#define 找(集, 值) 集.find(值)

//字符串相關的類，函數和字符特徵
#include <string>
#define 長(字符) 字符.length()
#define 部字(字符, 下, 上) 字符.substr(下, 上)

//効用,標題定義了庫中其餘部分使用的許多基本函數和類模板
#include <utility>
#define 組(一, 二) make_pair(一, 二)
#define 換(一, 二) swap(一, 二)

//向量,一個可變長度數組
#include <vector>
#define 去(向量) (向量).clear()
#define 空(向量) 向量.empty()
#define 除(向量, 值) 向量.erase(值)
#define 插(向量, 值) 向量.insert(值)
#define 添(向量, 值) 向量.push_back(值)
#define 變長(向量, 長) 向量.resize(長)

//論理
#define 如(條件) if (條件)
#define 如他(條件) else if (條件)
#define 他 else

//循環
#define 再(變數, 上) for (整 變數 = 0; 變數 < 上; 變數 += 1)
#define 逆再(變數, 上) for (整 變數 = 上 - 1; 變數 > 0; 變數 -= 1)
#define 間(變數, 下, 上) for (整 變數 = 下; 變數 <= 上; 變數 += 1)
#define 逆間(變數, 下, 上) for (整 變數 = 上; 變數 >= 下; 變數 -= 1)
#define 在(條件) while (條件)
#define 斷 break
#define 次 continue

//基本
#define 心() main()
#define 返 return

//演算子
#define 代 =
#define 是 ==

#define 構 struct
#define 定 const
#define 真 true
#define 偽 false
#define 終 endl

//標準下
using namespace std;

//中文型繁
typedef int 整數;
typedef void 無;
typedef long long 整;
typedef vector<整> 整向;
typedef vector<整向> 整向向;
typedef vector<整向向> 整向向向;
typedef double 小;
typedef vector<小> 小向;
typedef vector<小向> 小向向;
typedef char 字;
typedef vector<字> 字向;
typedef vector<字向> 字向向;
typedef string 字符;
typedef vector<字符> 字符向;
typedef pair<整, 整> 整對;
typedef vector<整對> 整對向;
typedef pair<小, 小> 小對;
typedef vector<小對> 小對向;
typedef vector<小對向> 小對向向;
typedef pair<整, 小> 整小對;
typedef vector<整小對> 整小對向;
typedef bool 旗;
typedef vector<旗> 旗向;
typedef vector<旗向> 旗向向;
typedef stack<整> 整堆;
typedef queue<整> 整隊;
typedef queue<整對> 整對隊;
typedef priority_queue<整> 優隊;
typedef set<整> 整又;
typedef map<整, 整> 整組;
typedef map<整, 字符> 字組;

構 邊 { 整 對, 費; };
typedef vector<邊> 圖;

整 大值(整 一, 整 二) { 返 max(一, 二); }
整 小值(整 一, 整 二) { 返 min(一, 二); }

//定 整 無限 = (2e9) + 10;
//定 整 法 = 1000000007;
//定 小 境界 = 1e-9;
//定 小 半円 = acos(-1.0);
//定 整 百 = 100;
//定 整 千 = 1000;
//定 整 万 = 10000;
//定 整 億 = 100000000;
//定 整 四方横[5] = {0,1,0,-1,0};
//定 整 四方縦[5] = {0,0,1,0,-1};
整 枚, 總;

無 入力關數()
{
    入(枚) >> 總;
}

無 年玉()
{
    再(千, 枚 + 1)
    {
        再(五千, 枚 - 千 + 1)
        {
            整 萬 代 枚 - 千 - 五千;
            如(萬 * 10000 + 五千 * 5000 + 千 * 1000 是 總)
            {
                出(萬) << " " << 五千 << " " << 千 << 終;
                返;
            }
        }
    }
    出(-1) << " " << -1 << " " << -1 << 終;
    返;
}

整數 心()
{
    入力關數();
    年玉();
    返 0;
}

Measured memory_bytes: 256