def ascan; gets.split.map(&:to_i); end def scan; gets.to_i; end nstr = gets.chomp def solve(nstr, md) sz = nstr.size # 上位半分 r = nstr[0..((sz+1)/2-1)].to_i # 下半分なら999...通りぐらいある r+= 10**(sz/2) - 1 # 下半分の回文ができない r-=1 if nstr[0..(sz/2-1)].reverse > nstr[((sz+1)/2)..-1] return r%md end if nstr.size == 1 p nstr.to_i, nstr.to_i else p solve(nstr,(1e9).to_i) p solve(nstr,(1e9+7).to_i) end # 参考: submissions/179227