The last stage of Football World Cup is played using the play-off system.

There are n teams left in this stage, they are enumerated from 1 to n. Several rounds are held, in each round the remaining teams are sorted in the order of their ids, then the first in this order plays with the second, the third — with the fourth, the fifth — with the sixth, and so on. It is guaranteed that in each round there is even number of teams. The winner of each game advances to the next round, the loser is eliminated from the tournament, there are no draws. In the last round there is the only game with two remaining teams: the round is called the Final, the winner is called the champion, and the tournament is over.

Arkady wants his two favorite teams to play in the Final. Unfortunately, the team ids are already determined, and it may happen that it is impossible for teams to meet in the Final, because they are to meet in some earlier stage, if they are strong enough. Determine, in which round the teams with ids a and b can meet.


-----Input-----

The only line contains three integers n, a and b (2 ≤ n ≤ 256, 1 ≤ a, b ≤ n) — the total number of teams, and the ids of the teams that Arkady is interested in. 

It is guaranteed that n is such that in each round an even number of team advance, and that a and b are not equal.


-----Output-----

In the only line print "Final!" (without quotes), if teams a and b can meet in the Final.

Otherwise, print a single integer — the number of the round in which teams a and b can meet. The round are enumerated from 1.


-----Examples-----
Input
4 1 2

Output
1

Input
8 2 6

Output
Final!

Input
8 7 5

Output
2



-----Note-----

In the first example teams 1 and 2 meet in the first round.

In the second example teams 2 and 6 can only meet in the third round, which is the Final, if they win all their opponents in earlier rounds.

In the third example the teams with ids 7 and 5 can meet in the second round, if they win their opponents in the first round.

Difficulty: interview

Starter code:

Solutions:
import sys
n, a, b = list(map(int, input().split()))

cnt = 0
l = [set([x]) for x in range(1, n+1)]

while 1:
    l = list([tup[0] | tup[1] for tup in zip(l[::2], l[1::2])])
    cnt += 1
    for el in l:
        if a in el and b in el:
            print(cnt if len(el) < n else 'Final!')
            return


t = list(map(int, input().split()))
n = t[0]
a = t[1]
b = t[2]
ans = 0
while a != b:
    n //= 2
    a = (a + 1) // 2
    b = (b + 1) // 2
    ans += 1
if n == 1:
    print('Final!')
else:
    print(ans)


n,a,b=list(map(int,input().split()))
def ll(x):
    if x==1:
        return 0
    return 1+ll(x//2)
def main(n,a,b):
    if n==1:
        return 0
    q=n//2
    if a<=q and b>q or a>q and b<=q:
        return ll(n)
    return main(q,(a-1)%q+1,(b-1)%q+1)
r=main(n,a,b)
if 2**r==n:
    print('Final!')
else:
    print(r)


R = lambda : list(map(int, input().split()))
n,a,b=R()
import math
k=math.ceil(math.log(n,2))
i=1
while (a!=b):
    a=(a+1)//2
    b=(b+1)//2
    i+=1

res = i-1
if res==k:
    print("Final!")
else:
    print(res)    


n, a, b = list(map(int, input().split()))
cnt = 1

a += a % 2
b += b % 2
while a != b:
    cnt += 1
    a /= 2
    b /= 2
    a += a % 2
    b += b % 2
if 2 ** cnt == n:
    print('Final!')
else:
    print(cnt)
    




n, a, b = map(int, input().split())
ans = 0
a -= 1
b -= 1
while n > 2:
    n //= 2
    a //= 2
    b //= 2
    ans += 1
    if a == b:
        print(ans)
        break
else:
    print("Final!")

n, a, b = list(map(int , input().split()))

a-=1
b-=1

n_round = 0
while n>2:
    n_round+=1
    a//= 2
    b//=2
    n//=2
    if a==b:
        break
else:
    print('Final!')
    return

print(n_round)




n, a, b = list(map(int, input().split()))
flag = 2
a -= 1
b -= 1
i = 1
while flag < n:
    if a // flag == b // flag:
        print(i)
        break
    i += 1
    flag *= 2
else:
    print('Final!')




n, a, b = [int(v) for v in input().split()]
a -= 1
b -= 1

r = 1
while True:
    nn = n // 2
    aa = a // 2
    bb = b // 2
    if aa == bb:
        print("Final!" if nn == 1 else r)
        break
    n, a, b = nn, aa, bb
    r += 1


n, a, b = list(map(int, input().split()))
a -= 1
b -= 1
q = []
for i in range(n // 2):
    q.append(((2 * i, 2 * i + 1), 1))

def wi(p):
    if a in p and b in p:
        return True
    return False

def ch(p):
    if a in p:
        return a
    if b in p:
        return b
    return p[0]

while 1:
    if len(q) == 1:
        print('Final!')
        return
    p1 = q[0][0]
    p2 = q[1][0]
    if wi(p1):
        print(q[0][1])
        return
    if wi(p2):
        print(q[1][1])
        return
    q.append(((ch(p1), ch(p2)), q[0][1] + 1))
    del q[0]
    del q[0]


n, a, b = [int(s) for s in input().split()]
a -= 1
b -= 1
l = 0
while a != b:
    l -=- 1
    a //= 2
    b //= 2
print(l if 2**l != n else 'Final!')

import math

n, a, b = map(int, input().split())
i = 2
a, b = min(a, b), max(a, b)
while True:
    if a <= n // i < b:
        break
    if a > n // i:
        a -= n // i
        b -= n // i
    i *= 2
ans = math.log(n, 2) - math.log(i, 2) + 1
if math.log(i, 2) == 1:
    print("Final!")
else:
    print(int(ans))

n,a,b = list(map(int,input().split()))

a -= 1
b -= 1
ans = 0
temp = 2
for i in range(8):
    if a // temp == b // temp:
        ans = i + 1
        break
    temp *= 2
    
if temp == n:
    print("Final!")
else:
    print(ans)


n, a, b = [int(x) for x in input().split()]
if a > b:
    a,b=b,a

import math as m
# for i in [2,4,8,16,32,64,128,256]:
#     print(int(m.log2(i)))
rounds = int(m.log2(n))
mr = rounds
lft, rgt = 1, n

while True:
    mdl = (lft + rgt) // 2
    if a <= mdl and b > mdl:
        break
    rounds -= 1
    if a <= mdl and b <= mdl:
        rgt =  mdl
    elif a > mdl and b > mdl:
        lft = mdl + 1

if rounds == mr:
    print('Final!')
else:
    print(rounds)

a,b,c=map(int,input().split(' '))
pwr=0
while a!=1:
    pwr+=1
    a=a//2
ans=1
for j in range(1,pwr):
    if (b-1)//(2**j)!=(c-1)//(2**j):
        ans+=1
if ans==pwr:
    print("Final!")
else:
    print(ans)

n, a, b = map(int, input().split())
num = 0
a += n - 2
b += n - 2
while a != b:
    a = (a - 1) // 2
    b = (b - 1) // 2
    num += 1

if 2 ** num == n:
    print("Final!")
else:
    print(num)

n, a, b = list(map(int, input().split()))
ls = list(range(1, n + 1))
k = 0
rounds = 0
m = n
while m > 1:
    m >>= 1
    rounds += 1
# print(rounds)
while len(ls) > 1:
    # print(ls)
    k += 1
    newls = []
    for i in range(0, len(ls), 2):
        if (ls[i] == a or ls[i] == b) and (ls[i + 1] == a or ls[i + 1] == b):
            if k == rounds:
                print("Final!")
            else:
                print(k)
            newls = []
            break
        elif ls[i] == a or ls[i + 1] == a:
            newls.append(a)
        elif ls[i] == b or ls[i + 1] == b:
            newls.append(b)
        else:
            newls.append(ls[i])
    ls = newls


n, a, b = [int(el) for el in input().split()]
for i in range(1,n+1):
    if 2 ** i == n:
        n = i
        break;
for i in range(1, n+1):
    if (a-1)//(2**i) == (b-1)//(2**i):
        if i == n:
            print('Final!')
        else:
            print(i)
        break


n, a, b = map(int, input().split())

def f(n, a, b):

  if (b > n // 2 and a <= n // 2) or (a > n // 2 and b <= n // 2):

    return 0

  if a > n // 2 and b > n // 2:

    return 1 + f(n // 2, a - n // 2, b - n // 2)

  if a <= n // 2 and b <= n // 2:

    return 1 + f(n // 2, a, b)

deg = 0

raund = f(n, a, b)

while n > 0:

  deg += 1

  n //= 2

if raund == 0:

  print('Final!')

else:

  print(deg - raund - 1)

def make_tour(people):
    teams = []
    people.sort()
    for i in range(len(people)):
        if i % 2 == 0:
            teams.append([people[i]])
        else:
            teams[-1].append(people[i])
    return teams


n, a, b = map(int, input().split())
people = []
ind = 1
fl = True
for i in range(1, n + 1):
    people.append(i)
while True:
    teams = make_tour(people)
    if len(teams) == 1:
        break
    for i in range(len(teams)):
        if teams[i][0] == a and teams[i][1] == b or teams[i][0] == b and teams[i][1] == a:
            fl = False
            print(ind)
            break
        elif teams[i][0] == a or teams[i][1] == a:
            teams[i] = [a]
        elif teams[i][0] == b or teams[i][1] == b:
            teams[i] = [b]
        else:
            teams[i] = [teams[i][0]]
    if not fl:
        break
    people = []
    for i in range(len(teams)):
        for j in range(len(teams[i])):
            people.append(teams[i][j])
    ind += 1
if fl:
    print('Final!')

import math

n,a,b = input().split()

n,a,b = int(n), int(a), int(b)

a-=1
b-=1

a=format(a, '010b')
b=format(b, '010b')

for i in range(len(a)):
	if (a[i]!=b[i]):
		if (len(a)-i==math.log(n,2)):
			print('Final!')
		else:
			print(len(a)-i)
		break

import sys
import itertools as it
import math

n,a,b = list(map(int, sys.stdin.readline().split()))

a-=1
b-=1
logn = int(math.log2(n))

for k in range(logn):
  if a&(1<<(logn-k-1)) != b&(1<<(logn-k-1)):
    if k==0:
      print('Final!')
    else:
      print(logn-k)
    break


import math

n, a, b = tuple(map(int, input().split()))




def mr(k,n):
    a = [0]
    for i in range(n//k):
        a.extend([i]*k)
    return a


rounds = {r : mr(2**r, 258) for r in range(1,10)}
#print(len(rounds[1]))

def sol(a, b):
    for i in range(1, 10):
        if rounds[i][a] == rounds[i][b]:
            return i
    return 0

a = sol(a,b)


print(a if a != int(math.log(n,2)) else "Final!")

n, a, b = [int(x) for x in input().split()]
a -= 1
b -= 1
res = 0;
while a != b:
    a //= 2
    b //= 2
    res += 1
if 2 ** res == n:
    print('Final!')
else:
    print(res)

n, a, b = [int(x) for x in input().split()]

l1 = [x for x in range(1, n + 1) ]
l2 = []
res = 0
found = False
while (not found):
    res += 1
    for i in range(0, len(l1), 2):
        if l1[i] in [a, b] and l1[i + 1] in [a, b]:
            found = True
            if len(l1) == 2:
                res = "Final!"
            break
        if l1[i] in [a, b]:
            l2.append(l1[i])
        else:
            l2.append(l1[i+1])

    l1 = l2
    l2 = []
        
print(res)