Tavak and Seyyed are good friends. Seyyed is very funny and he told Tavak to solve the following problem instead of longest-path.

You are given l and r. For all integers from l to r, inclusive, we wrote down all of their integer divisors except 1. Find the integer that we wrote down the maximum number of times.

Solve the problem to show that it's not a NP problem.


-----Input-----

The first line contains two integers l and r (2 ≤ l ≤ r ≤ 10^9).


-----Output-----

Print single integer, the integer that appears maximum number of times in the divisors. 

If there are multiple answers, print any of them.


-----Examples-----
Input
19 29

Output
2

Input
3 6

Output
3



-----Note-----

Definition of a divisor: https://www.mathsisfun.com/definitions/divisor-of-an-integer-.html

The first example: from 19 to 29 these numbers are divisible by 2: {20, 22, 24, 26, 28}.

The second example: from 3 to 6 these numbers are divisible by 3: {3, 6}.

Difficulty: interview

Starter code:

Solutions:
l,r  = map(int, input().split(" "))
if l == r:
    print (l)
else:
    print (2)

a, b = list(map(int, input().split()))
if a != b:
    print(2)
else:
    print(a)


l,r=map(int,input().split())
if abs(l-r)>0:
    print(2)
else:
    print(l)

L, R = [int(i) for i in input().split()]

if L == R:
    print(L)
else:
    print(2)


def __starting_point():
    l, r = list(map(int, input().split()))
    if l == r:
        print(l)
    else:
        print(2)

__starting_point()

l, r = map(int, input().split())   
if l == r:
    print(l)
else:
    print(2)

l, r = list(map(int, input().split()))
if l == r:
    print(l)
else:
    print(2)


l, r = map(int, input().split())
print(2 if r - l + 1 >= 2 else l)

l,r = list(map(int,input().split()))
if l==r:
	print(l)
else:
	print(2)


l, r = [int(i) for i in input().split()]
if l != r:
    print(2)
else:
    print(r)


l,r = map(int, input().split())
if l == r:
    print(l)
else:
    print(2)

l, r = list(map(int, input().split()))

if l == r:
    print(l)
else:
    print(2)


x, y = list(map(int, input().split()))

if x == y:
    print(x)
else:
    print(2)


I = lambda: input().split()
l, r = map(int, I())
if l == r:
    print(l)
else:
    print(2)

import sys

def solve():
    l, r = map(int, input().split())

    if l == r:
        ans = l
    else:
        ans = 2

    print(ans)

def __starting_point():
    solve()
__starting_point()

l, r = list(map(int, input().split()))

if l == r:
    print(l)
else:
    print(2)


l,r = map(int,input().split())
if(l==r):
	print(l)
else:
	print(2)

L, R = map(int, input().split())
if (R != L):
    print(2)
else:
    print(L)

tmp=input()
tmp=tmp.split(' ')
l=int(tmp[0])
r=int(tmp[1])
if (l==r):
    print(l)
else:
    print(2)


l, r = map(int, input().split())

if l == r:
    print(l)
else:
    print(2)

import math,string,itertools,collections,re,fractions,array,copy
import bisect
import heapq
from itertools import chain, dropwhile, permutations, combinations
from collections import deque, defaultdict, OrderedDict, namedtuple, Counter, ChainMap


# Guide:
#   1. construct complex data types while reading (e.g. graph adj list)
#   2. avoid any non-necessary time/memory usage
#   3. avoid templates and write more from scratch
#   4. switch to "flat" implementations

def VI(): return list(map(int,input().split()))
def I(): return int(input())
def LIST(n,m=None): return [0]*n if m is None else [[0]*m for i in range(n)]
def ELIST(n): return [[] for i in range(n)]
def MI(n=None,m=None): # input matrix of integers
    if n is None: n,m = VI()
    arr = LIST(n)
    for i in range(n): arr[i] = VI()
    return arr
def MS(n=None,m=None): # input matrix of strings
    if n is None: n,m = VI()
    arr = LIST(n)
    for i in range(n): arr[i] = input()
    return arr
def MIT(n=None,m=None): # input transposed matrix/array of integers
    if n is None: n,m = VI()
    a = MI(n,m)
    arr = LIST(m,n)
    for i,l in enumerate(a):
        for j,x in enumerate(l):
            arr[j][i] = x
    return arr

def main(info=0):
    # n = I()
    # a = VI()
    # aa = MI()
    # s = input()
    # ss = MS()
    # n,m = VI()
    # u,v,w = MIT(n,m)
    # img = MS(n,m)
    l,r = VI()
    #math.gcd(l,r)
    if l==r:
        print(l)
        return
    print(2)




def __starting_point():
    main()

__starting_point()

l, r = list(map(int, input().split()))
if l != r:
	print("2")
else:
	print(l)


l, r = list(map(int, input().split()))
l1, r1 = l, r
if l == r:
    print(l)
else:
    print(2)


def Main():
	a, b = map(int ,input().split())
	if a == b:
		print(a)
	else:
		print(2)
	
def __starting_point():
  Main()
__starting_point()