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);
currentSignal = _stackPop(allNumbers);
}).catch(function (err) {
console.log("Runtime Error!");
console.log("Description:");
console.log(err);
});
}
}
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();
cHJvY2Vzcy5zdGRpbi5yZXN1bWUoKTsKcHJvY2Vzcy5zdGRpbi5zZXRFbmNvZGluZygndXRmOCcpOwoKCmZ1bmN0aW9uIE1haW4oKSB7Cgl2YXIgYWxsTnVtYmVycyA9IFtdOwoJZm9yICh2YXIgaSA9IDE7IGkgPCAxMDA7IGkrKykgewoJCWFsbE51bWJlcnMucHVzaChHZW5lcmF0ZVNpZ25hbFByb21pc2UoaSkpOwoJfQoJCgl2YXIgY3VycmVudFNpZ25hbCA9IF9zdGFja1BvcChhbGxOdW1iZXJzKTsKCXdoaWxlIChjdXJyZW50U2lnbmFsKSB7CgkJY3VycmVudFNpZ25hbC50aGVuKGZ1bmN0aW9uIChzaWduYWwpIHsKCQkJY29uc29sZS5sb2coc2lnbmFsKTsKCQkJY3VycmVudFNpZ25hbCA9IF9zdGFja1BvcChhbGxOdW1iZXJzKTsKCQl9KS5jYXRjaChmdW5jdGlvbiAoZXJyKSB7CgkJCWNvbnNvbGUubG9nKCJSdW50aW1lIEVycm9yISIpOwoJCQljb25zb2xlLmxvZygiRGVzY3JpcHRpb246Iik7CgkJCWNvbnNvbGUubG9nKGVycik7CgkJfSk7Cgl9Cn0KCmZ1bmN0aW9uIEdlbmVyYXRlU2lnbmFsUHJvbWlzZShudW1iZXIpIHsKCXJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CgkJdmFyIHR5cGVzID0gewoJCQkzOiAiRml6eiIsCgkJCTU6ICJCdXp6IgoJCX07CgkJCgkJdmFyIGZ1bGxTaWduYWwgPSAiIjsKCQlmb3IgKHR5cGUgaW4gdHlwZXMpIHsKCQkJaWYgKF9jaGVja2luZ051bShudW1iZXIsIHR5cGUpKSB7CgkJCQlmdWxsU2lnbmFsICs9IHR5cGVzW3R5cGVdOwoJCQl9CgkJfQoJCQoJCXJlc29sdmUoZnVsbFNpZ25hbCB8fCBudW1iZXIpOwoJfSk7Cn0KCmZ1bmN0aW9uIF9zdGFja1BvcCAoc3RhY2spIHsKCWlmIChzdGFjay5sZW5ndGgpIHsKCQlyZXR1cm4gc3RhY2suc2hpZnQoKTsKCX0KCWVsc2UgewoJCXJldHVybiBudWxsOwoJfQp9CgpmdW5jdGlvbiBfY2hlY2tpbmdOdW0obnVtYmVyLCBkaXZpZGVyKSB7CglyZXR1cm4gbnVtYmVyICUgZGl2aWRlciA9PSAwOwp9CgpNYWluKCk7