l=(n=gets(p).split"\n").size\x0d s=0\x0d q=n.map{|i|s+=1;[s,i.size-s]}\x0d q.map{|i,j|j}.max.downto(1-l){|i|\x0d t=q.select{|k,l|l>=i}.map{|m,o|m}.max\x0d d=" "*(i+l)*2\x0d t.times{|e|\x0d r=n[e][i+e,1]\x0d d+=" "+((r==nil||i+e<0||r=="")?" ": r)\x0d }\x0d puts d[l*2+3..-1]\x0d }
Note that non-ascii characters in the above source code will be escaped (such as \x9f).