my @input = ( 225,225,137,151,146,206,230,149,205,148,231,133,176,148,155,236, 161,42,152,199,133,93,133,143,167,231,219,145,142,204,231,64, 195,146,219,194,214,202,198,229,148,147,216,231,230,217,145,141, 235,205,137,214,129,215,147,142,208,148,148,201,216,216,137,210, 199,148,217,330,229,180,220,210,133,213,200,211,142,209,232,148, 130,213,222,207,215,200,196,229,213,148,216,347,243,264,146,228, 217,136,204,212,142,137,225,143,213,64,220,198,223,224,143,230, 328,160,264,149,217,136,206,224,133,217,217,212,227,209,221,78, 130,198,215,198,132,197,211,212,234,133,147,230,216,226,145,141, 224,209,223,220,142,208,147,129,207,132,148,201,216,213,132,155, 134,151,220,215,133,147,217,223,218,217,206,209,211,199,153,136, 199,228,212,141,132,203,194,233,217,64,214,232,225,231,202,208, 230,201,221,216,132,137,220,148,141,64,218,198,229,148,129,209, 213,150,217,136,212,149,215,141,213,225,214,215,142,211,232,151, 199,228,143,213,211,131,194,215,216,64,226,235,147,216,202,225, 230,201,204,231,78,137,199,136,198,64,235,212,229,224,132,143, 221,137,224,212,133,140,206,225,217,222,204,133,220,210,237,133, 142,146,221,208,214,131,205,226,226,135,147,235,216,225,202,218, 214,205,219,147,151,209,212,148,129,151,217,133,230,213,153,143, 206,133,230,205,145,64,199,226,217,146,208,217,142,198,218,142, 130,224,212,215,201,213,129,217,227,146,218,222,231,148,220,213, 213,220,137,231,136,206,236,64,197,137,216,133,219,217,146,212, 148,64,189,220,133,137,216,141,203,225,217,133,227,214,153,148, 202,215,143,205,205,217,202,225,219,76,147,235,212,232,205,210, 230,148,137,231,143,137,213,133,129,132,217,201,220,215,129,227, 203,132,148,208,202,146,202,141,217,225,135,217,214,200,153,149, 208,216,216,207,205,214,201,216,216,64,234,232,229,223,133,228, 220,209,204,219,64,221,219,133,218,64,235,205,226,148,134,222, 219,135,220,220,133,136,202,223,202,146,207,198,228,200,153,148, 202,231,226,129,202,196,211,147,231,143,147,231,226,214,209,230, 148,201,205,233,129,215,214,133,197,78,148,174,231,148,137,226, 134,146,213,220,205,133,215,141,203,225,217,133,227,214,153,148, 209,146,209,198,132,203,198,229,217,64,215,222,215,221,200,206, 232,205,205,147,148,216,147,148,201,133,148,204,229,217,129,227, 134,148,213,219,208,64,215,210,210,211,208,211,215,209,224,64, 196,215,213,208,214,200,129,232,231,64,341,249,263,148,217,213, 213,220,137,217,146,216,224,64,213,136,217,216,216,148,136,222, 212,143,230,205,201,64,201,210,198,214,135,220,211,131,237,129, 205,215,143,202,210,198,211,216,213,147,216,221,147,216,202,227, 227,220,210,226,142,137,231,143,129,148,220,198,231,148,131,208, 219,147,217,136,203,143,215,141,220,218,208,200,214,131,237,136, 199,235,143,200,197,217,198,147,232,136,216,153,223,213,216,225, 148,206,222,223,140,137,224,133,194,147,233,215,216,148,143,213, 134,132,217,222,212,148,206,220,211,146,329,229,258,131,237,136, 195,230,143,216,201,131,201,216,230,133,147,225,220,219,205,217, 237,136,219,216,147,216,223,150,198,64,232,205,212,232,64,227, 206,133,231,205,133,132,202,206,201,146,218,205,207,207,229,64, 208,225,227,129,204,196,215,216,148,132,220,222,215,148,206,219, 148,222,202,220,142,137,341,160,245,64,232,205,212,232,64,227, 206,137,231,136,211,129,217,214,212,224,147,133,227,209,221,133, 212,146,182,208,200,143,129,230,220,129,223,229,147,220,198,227, 217,136,202,147,142,206,234,64,195,137,230,217,219,148,143,213, 134,134,230,205,202,132,212,218,133,340,231,249,142,196,231,132, 130,230,215,194,216,131,200,226,234,133,229,231,224,217,211,225, 148,215,207,147,148,209,216,64,209,133,227,213,223,217,76,143, 200,153,148,220,205,133,133,221,202,225,215,209,211,143,153,134, 209,228,143,213,204,200,129,227,217,143,227,229,216,160,133,224, 220,201,213,223,64,215,226,148,129,144,217,215,220,231,136,143, 204,146,227,213,133,148,205,210,133,215,200,215,226,203,155,91, 108,229,158,188,145,325,225,263,160,78,208,168,147,163,206,212, 231,163,115,224,153,137,179,151,208,146,216,216,147,177,64,226, 214,140,221,220,133,72,135,141,135,158,139,196,151,158,131,134, 209,228,143,137,164,218,208,229,216,147,156,153,238,126,133,141, 148,136,137,147,64,137,151,146,198,147,233,209,231,231,77,173, 225,140,215,136,137,127,226,152,144,173,113,226,120,109,230,153, 130,150,220,202,210,131,158,147,231,136,220,223,231,148,165,232, 207,136,220,226,146,221,147,150,194,140,233,202,230,148,69,147, 216,133,231,221,209,148,216,202,226,146,162,111,219,220,153,68, 207,211,231,129,161,131,212,219,221,134,231,153,179,239,192,141, 230,205,223,216,146,220,216,64,212,143,230,217,147,234,129,219, 219,133,231,136,138,68,215,210,216,231,211,217,225,192,246,91, 108,124,228,212,201,131,165,212,232,129,173,179,183,233,210,221, 217,218,164,125,134,216,229,64,137,147,227,215,231,148,139,212, 223,147,148,141,137,146,202,224,218,222,219,216,151,131,244,42, 130,146,143,129,132,131,129,147,228,146,220,231,231,148,135,145, 211,162,137,179,155,196,151,146,198,147,233,209,231,231,77,173, 225,68,211,229,194,157,193,219,135,173,113,226,120,109,233,146, 203,224,227,129,134,176,194,235,174,64,149,165,147,222,212,214, 226,144,139,159,66,149,147,147,208,146,232,133,218,230,133,223, 134,155,152,218,202,147,218,217,217,229,148,163,233,135,216,157, 130,175,172,129,136,208,194,235,241,64,222,222,236,231,133,146, 152,218,206,230,149,213,231,147,138,76,148,135,147,156,68,220, 199,152,157,196,211,66,160,119,213,228,208,211,226,131,155,109, 203,224,169,129,134,143,129,221,227,137,225,161,149,160,135,153, 148,219,216,229,148,137,218,146,198,144,148,224,151,230,133,226, 219,140,232,219,146,94,224,145,196,239,135,162,171,131,157,141, 203,224,236,129,207,200,218,230,148,69,151,235,216,231,218,217, 232,219,146,159,64,139,147,72,133,141,221,211,156,208,142,145, 161,42,126,213,222,64,137,224,218,223,162,111,146,214,238,141, 130,157,172,129,136,213,198,230,233,140,231,236,160,178,224,145, 211,229,137,217,143,219,147,139,198,153,231,133,152,152,146,212, 217,149,224,220,216,91,111,218,222,146,139,200,221,216,231,148, 157,124,147,196,211,216,207,231,159,75,147,223,226,230,133,216, 217,225,220,147,69,141,229,133,212,149,224,217,230,175,42,223, 216,137,226,220,133,66,166,227,202,228,200,204,211,157,153,96, 221,205,147,212,217,208,129,162,148,68,214,232,232,226,217,202, 241,196,215,149,91,115,); my $pass = shift; sub show { my ($password, @msg) = @_; my $i = 0; my @pad = map { ord($_) } split(//, $password); my @results ; for (@msg) { my $t = ($_ - $pad[$i]); push @results, chr($t); $i++; $i = 0 if $i > @pad-1; } return join "", @results; } print show($pass, @input);