nm = gets.chomp!.scan(/^(\d+) (\d+)$/) abort "line 1: format" unless nm.size == 1 n,m = nm[0].map(&:to_i) line = gets.chomp! abort "line 2: format" unless line=~/^\d+(?: \d+)*$/ aa = line.split.map(&:to_i) aa.each{|e| abort "line 2: 1<=a<=10^7" unless 1 <= e && e <= 10000000 } m.times{|no| lsc = gets.chomp!.scan(/^(\d+) (\d+)$/) abort "line #{no+3}: format" unless lsc.size == 1 u,v = lsc[0].map(&:to_i) abort "line #{no+3}: u < v" unless u < v abort "line #{no+3}: 1 <= u <= n" unless 1 <= u && u <= n abort "line #{no+3}: 1 <= v <= n" unless 1 <= v && v <= n } abort "eof: too many" unless !gets puts "format ok"