$i = $<.read.split while !$i.empty? do r, k, h, w = $i.shift(4).map(&:to_i) g = $i.shift(h).map { |l| l.split("") } if h < w while g.size < w g << ["*"] * w end h = w else while g[0].size < h h.times do |i| g[i] << "*" end end w = h end (r / 90).times do g = g.transpose h.times do |i| g[i].reverse! end end ans = Array.new(h*k) { Array.new(w*k, '.') } h.times do |i| w.times do |j| k.times do |ii| k.times do |jj| ans[i*k + ii][j*k + jj] = g[i][j] end end end end ans.each do |row| row.delete("*") if row.size > 0 puts row.join end end end