// Soal 1
// By Taufiq Hidayatullah
function tekaTekiTeko( batas) {
// Validasi tipe data dan rentang nilai dari parameter 'batas'.
if ( typeof batas !== 'number' || ! Number .isInteger ( batas) || batas < 20 ) {
throw new Error( "Parameter 'batas' harus merupakan bilangan bulat dengan nilai minimal 20." ) ;
}
// Iterasi utama dari 1 hingga nilai batas.
for ( let i = 1 ; i <= batas; i++ ) {
let output = '' ;
if ( i % 2 === 0 ) output += 'Teka' ;
if ( i % 3 === 0 ) output += 'Teki' ;
if ( i % 5 === 0 ) output += 'Teko' ;
console.log ( output || i) ;
}
}
// Kode ini akan 'mendengarkan' input.
process.stdin .on ( 'data' , ( data) => {
// Konversi input (yang berupa string) menjadi angka bulat.
const batasDariInput = parseInt( data.toString ( ) .trim ( ) , 10 ) ;
try {
console.log ( "--- Eksekusi program dimulai ---" ) ;
tekaTekiTeko( batasDariInput) ;
} catch ( error) {
console.error ( "Terjadi kesalahan:" , error.message ) ;
}
} ) ;
Ly8gU29hbCAxCi8vIEJ5IFRhdWZpcSBIaWRheWF0dWxsYWgKCmZ1bmN0aW9uIHRla2FUZWtpVGVrbyhiYXRhcykgewogIC8vIFZhbGlkYXNpIHRpcGUgZGF0YSBkYW4gcmVudGFuZyBuaWxhaSBkYXJpIHBhcmFtZXRlciAnYmF0YXMnLgogIGlmICh0eXBlb2YgYmF0YXMgIT09ICdudW1iZXInIHx8ICFOdW1iZXIuaXNJbnRlZ2VyKGJhdGFzKSB8fCBiYXRhcyA8IDIwKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoIlBhcmFtZXRlciAnYmF0YXMnIGhhcnVzIG1lcnVwYWthbiBiaWxhbmdhbiBidWxhdCBkZW5nYW4gbmlsYWkgbWluaW1hbCAyMC4iKTsKICB9CgogIC8vIEl0ZXJhc2kgdXRhbWEgZGFyaSAxIGhpbmdnYSBuaWxhaSBiYXRhcy4KICBmb3IgKGxldCBpID0gMTsgaSA8PSBiYXRhczsgaSsrKSB7CiAgICBsZXQgb3V0cHV0ID0gJyc7CiAgICBpZiAoaSAlIDIgPT09IDApIG91dHB1dCArPSAnVGVrYSc7CiAgICBpZiAoaSAlIDMgPT09IDApIG91dHB1dCArPSAnVGVraSc7CiAgICBpZiAoaSAlIDUgPT09IDApIG91dHB1dCArPSAnVGVrbyc7CiAgICBjb25zb2xlLmxvZyhvdXRwdXQgfHwgaSk7CiAgfQp9CgovLyBLb2RlIGluaSBha2FuICdtZW5kZW5nYXJrYW4nIGlucHV0Lgpwcm9jZXNzLnN0ZGluLm9uKCdkYXRhJywgKGRhdGEpID0+IHsKICAvLyBLb252ZXJzaSBpbnB1dCAoeWFuZyBiZXJ1cGEgc3RyaW5nKSBtZW5qYWRpIGFuZ2thIGJ1bGF0LgogIGNvbnN0IGJhdGFzRGFyaUlucHV0ID0gcGFyc2VJbnQoZGF0YS50b1N0cmluZygpLnRyaW0oKSwgMTApOwoKICB0cnkgewogICAgY29uc29sZS5sb2coIi0tLSBFa3Nla3VzaSBwcm9ncmFtIGRpbXVsYWkgLS0tIik7CiAgICB0ZWthVGVraVRla28oYmF0YXNEYXJpSW5wdXQpOwogIH0gY2F0Y2ggKGVycm9yKSB7CiAgICBjb25zb2xlLmVycm9yKCJUZXJqYWRpIGtlc2FsYWhhbjoiLCBlcnJvci5tZXNzYWdlKTsKICB9Cn0pOw==