process.stdin.resume();
process.stdin.setEncoding('utf8');
// your code goes here
process.stdin.resume();
process.stdin.setEncoding('utf8');
// your code goes here
function bind(fu, obj)
{
return function()
{
return fu.call(obj);
}
}
global.x = 1;
var ctx = { x: 2 };
function testThis() { console.log(this.x); }
console.log(testThis()); // 1
var boundFunction = bind(testThis, ctx);
console.log(boundFunction()); // 2
cHJvY2Vzcy5zdGRpbi5yZXN1bWUoKTsKcHJvY2Vzcy5zdGRpbi5zZXRFbmNvZGluZygndXRmOCcpOwoKLy8geW91ciBjb2RlIGdvZXMgaGVyZQoKcHJvY2Vzcy5zdGRpbi5yZXN1bWUoKTsKcHJvY2Vzcy5zdGRpbi5zZXRFbmNvZGluZygndXRmOCcpOwoKLy8geW91ciBjb2RlIGdvZXMgaGVyZQoKZnVuY3Rpb24gYmluZChmdSwgb2JqKQp7CiAgICByZXR1cm4gZnVuY3Rpb24oKQogICAgewogICAgICAgIHJldHVybiBmdS5jYWxsKG9iaik7CiAgICB9Cn0KCmdsb2JhbC54ID0gMTsKdmFyIGN0eCA9IHsgeDogMiB9OwoKZnVuY3Rpb24gdGVzdFRoaXMoKSB7IGNvbnNvbGUubG9nKHRoaXMueCk7IH0KY29uc29sZS5sb2codGVzdFRoaXMoKSk7IC8vIDEKdmFyIGJvdW5kRnVuY3Rpb24gPSBiaW5kKHRlc3RUaGlzLCBjdHgpOwpjb25zb2xlLmxvZyhib3VuZEZ1bmN0aW9uKCkpOyAvLyAyCg==