MOD = ARGV[0] || 999989

tmpl = <<END.chomp
##################################################
##################################################
##################################################
##############....##############....##############
############.......############.......############
##########..........##########..........##########
#########............########............#########
#########.............######.............#########
########.............########.............########
########............##......##............########
#####################........#####################
#####################........#####################
######################......######################
#####################.######.#####################
####################..........####################
###################............###################
#################................#################
################..................################
###################............###################
##################################################
##################################################
##################################################
END

harness = <<'END'.chomp.sub("MODMOD") { MOD }
eval=eval=eval='Z'##'
/#{eval eval if eval          .size>#{(s=%(eval$s=%q(#$s)#)).size-1}}}#LMNOPQRS
##thx.flagitious!##            TUVWXY/.i rescue##/
3141592653589793+                +271828182845904;
9876543210;;eval                  "x=((#{s.sum}-eval.
sum)%256).chr;;eval            .scan(//){a=$`+x+$'
a.unpack('H*')[0].hex%MODMOD==VV&&eval(a)}#"##"
eval eval#### (C) Copyright 2014 Yusuke Endoh ####
END

harness.gsub!(/ {10,}/) { ")+?@*#{ $&.size }+%(" }
harness.tr!(" \n'", "@_^")
harness.sub!("VV") { '#{s.unpack("H*")[0].hex%MODMOD}'.sub("MODMOD") { MOD } }

code = <<'END'.chomp.split.join.sub("HARNESS") { harness }
eval$s=%q(
  eval(%w(
    puts((%q(HARNESS)).tr("@_^",32.chr<<10<<39).sub(?Z,s));
    exit
    #ABCDEFGHIJK

  )*%())
)
END

code = (" " * "eval=eval=eval='".size) + code
code = tmpl.tr(".", " ").gsub(/#/) { x=code.slice!(0, 1); x=="" ? ?# : x }

def puts(str)
  $str = str + "\n"
end
def exit
  throw(:exit)
end

catch(:exit) { eval code }

File.write("rquine.rb", $str)
