#!/usr/bin/env ruby class CircList def initialize(size) @list = (0...size).to_a @skip = 0 @ptr = 0 end def reverse_sublist(len) if @ptr + len > @list.length then reverse_wrapping_sublist(len) else reverse_contained_sublist(len) end inc_ptr(len) end def to_a return @list end def to_s l = @list.dup l[@ptr] = "[#{l[@ptr]}]" return "#{l.join(' ')} skip = #{@skip}" end private def reverse_wrapping_sublist(len) dbl = @list.dup + @list.dup sublist = dbl[@ptr...@ptr+len].reverse (@ptr...@ptr+len).each do |i| @list[i % @list.length] = sublist[i-@ptr] end end def reverse_contained_sublist(len) sublist = @list[@ptr...@ptr+len].reverse (@ptr...@ptr+len).each do |i| @list[i] = sublist[i-@ptr] end end def inc_ptr(len) @ptr += len @ptr += @skip @ptr = @ptr % @list.length @skip += 1 end end input = gets.chomp.split(',').map(&:to_i) list = CircList.new(256) input.each do |len| list.reverse_sublist(len) end puts list.to_a[0] * list.to_a[1]