process.stdin.resume();
process.stdin.setEncoding('utf8');
function Main() {
var allNumbers = [];
for (var i = 1; i < 100; i++) {
allNumbers.push(GenerateSignalPromise(i));
}
var currentSignal = _stackPop(allNumbers);
while (currentSignal) {
currentSignal.then(function (signal) {
console.log(signal);
}).catch(function (err) {
console.log("Runtime Error!");
console.log("Description:");
console.log(err);
});
currentSignal = _stackPop(allNumbers);
}
}
function GenerateSignalPromise(number) {
return new Promise(function (resolve, reject) {
var types = {
3: "Fizz",
5: "Buzz"
};
var fullSignal = "";
for (type in types) {
if (_checkingNum(number, type)) {
fullSignal += types[type];
}
}
resolve(fullSignal || number);
});
}
function _stackPop (stack) {
if (stack.length) {
return stack.shift();
}
else {
return null;
}
}
function _checkingNum(number, divider) {
return number % divider == 0;
}
Main();
cHJvY2Vzcy5zdGRpbi5yZXN1bWUoKTsKcHJvY2Vzcy5zdGRpbi5zZXRFbmNvZGluZygndXRmOCcpOwoKCmZ1bmN0aW9uIE1haW4oKSB7Cgl2YXIgYWxsTnVtYmVycyA9IFtdOwoJZm9yICh2YXIgaSA9IDE7IGkgPCAxMDA7IGkrKykgewoJCWFsbE51bWJlcnMucHVzaChHZW5lcmF0ZVNpZ25hbFByb21pc2UoaSkpOwoJfQoJCgl2YXIgY3VycmVudFNpZ25hbCA9IF9zdGFja1BvcChhbGxOdW1iZXJzKTsKCXdoaWxlIChjdXJyZW50U2lnbmFsKSB7CgkJY3VycmVudFNpZ25hbC50aGVuKGZ1bmN0aW9uIChzaWduYWwpIHsKCQkJY29uc29sZS5sb2coc2lnbmFsKTsKCQl9KS5jYXRjaChmdW5jdGlvbiAoZXJyKSB7CgkJCWNvbnNvbGUubG9nKCJSdW50aW1lIEVycm9yISIpOwoJCQljb25zb2xlLmxvZygiRGVzY3JpcHRpb246Iik7CgkJCWNvbnNvbGUubG9nKGVycik7CgkJfSk7CgkJY3VycmVudFNpZ25hbCA9IF9zdGFja1BvcChhbGxOdW1iZXJzKTsKCX0KfQoKZnVuY3Rpb24gR2VuZXJhdGVTaWduYWxQcm9taXNlKG51bWJlcikgewoJcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKCQl2YXIgdHlwZXMgPSB7CgkJCTM6ICJGaXp6IiwKCQkJNTogIkJ1enoiCgkJfTsKCQkKCQl2YXIgZnVsbFNpZ25hbCA9ICIiOwoJCWZvciAodHlwZSBpbiB0eXBlcykgewoJCQlpZiAoX2NoZWNraW5nTnVtKG51bWJlciwgdHlwZSkpIHsKCQkJCWZ1bGxTaWduYWwgKz0gdHlwZXNbdHlwZV07CgkJCX0KCQl9CiAgICAJCXJlc29sdmUoZnVsbFNpZ25hbCB8fCBudW1iZXIpOwoJCQoJfSk7Cn0KCmZ1bmN0aW9uIF9zdGFja1BvcCAoc3RhY2spIHsKCWlmIChzdGFjay5sZW5ndGgpIHsKCQlyZXR1cm4gc3RhY2suc2hpZnQoKTsKCX0KCWVsc2UgewoJCXJldHVybiBudWxsOwoJfQp9CgpmdW5jdGlvbiBfY2hlY2tpbmdOdW0obnVtYmVyLCBkaXZpZGVyKSB7CglyZXR1cm4gbnVtYmVyICUgZGl2aWRlciA9PSAwOwp9Ck1haW4oKTs=