str = gets.chomp
gets

ARGF.each do |line|
  c = line.chomp.split
  case c[0]
  when "print"
    puts str[(c[1].to_i)..(c[2].to_i)]
  when "replace"
    str.gsub!(str[(c[1].to_i)..(c[2].to_i)], c[3])
  when "reverse"
    a = str.slice!(str[(c[1].to_i)..(c[2].to_i)])
    a.reverse!
    str = a + str
  end
end