#include <stdio.h>
#define N 4 // 硬貨の種類
int main(void)
{
int pay; // 支払い金額
int yen[] = {10, 50, 100, 500}; // 各硬貨
int num[N]; // 各硬貨の枚数
int sum; // 合計金額
int diff; // 差額
int temp; //
int i; // ループ変数
while(1){
// 支払い金額の読み込み
scanf("%d", &pay);
// 0だったら終了
if(pay == 0)
break;
// 各硬貨の枚数の読み込み
for(i = 0; i < N; i++)
scanf("%d", &num[i]);
sum = 0; // 合計金額を0に更新
// 所持金の合計金額を求める
for(i = 0; i < N; i++)
sum += yen[i] * num[i];
diff = sum - pay; // 合計金額と支払い額の差額を求める
// 差額の硬貨の枚数を現在の硬貨の枚数から引くことで、
// 適切な支払いをするための硬貨の枚数を配列内に残す
for(i = N - 1; i >= 0; i--){
temp = diff / yen[i]; // 差額の硬貨の枚数を求める
num[i] -= temp; // 現在手持ちの硬貨の枚数から引く
diff %= yen[i]; // 残った額を求める
}
// 残った硬貨の枚数が1枚以上なら出力
for(i = 0; i < N; i++){
if(num[i] > 0)
printf("%d %d\n", yen[i], num[i]);
}
putchar('\n');
}
return (0);
}