def digital_root(n : Int32) : Int32 n == 0 ? 0 : 1 + (n - 1) % 9 end # Read input input = gets.not_nil!.split.map(&.to_i) k = input[0] n = input[1] # Sieve of Eratosthenes is_prime = Array.new(n + 1, true) primes = [] of Int32 (2..n).each do |i| next unless is_prime[i] primes << i if k <= i j = i * 2 while j <= n is_prime[j] = false j += i end end # Process primes with sliding window que = Deque(Int32).new v = Array.new(10, false) mlen = 0 ans = 0 primes.each do |p| t = digital_root(p) while v[t] front = que.shift v[digital_root(front)] = false end que.push(p) v[t] = true if mlen <= que.size mlen = que.size ans = que.first end end puts ans