Yaroslav, Andrey and Roman can play cubes for hours and hours. But the game is for three, so when Roman doesn't show up, Yaroslav and Andrey play another game. 

Roman leaves a word for each of them. Each word consists of 2·n binary characters "0" or "1". After that the players start moving in turns. Yaroslav moves first. During a move, a player must choose an integer from 1 to 2·n, which hasn't been chosen by anybody up to that moment. Then the player takes a piece of paper and writes out the corresponding character from his string. 

Let's represent Yaroslav's word as s = s_1s_2... s_2n. Similarly, let's represent Andrey's word as t = t_1t_2... t_2n. Then, if Yaroslav choose number k during his move, then he is going to write out character s_{k} on the piece of paper. Similarly, if Andrey choose number r during his move, then he is going to write out character t_{r} on the piece of paper.

The game finishes when no player can make a move. After the game is over, Yaroslav makes some integer from the characters written on his piece of paper (Yaroslav can arrange these characters as he wants). Andrey does the same. The resulting numbers can contain leading zeroes. The person with the largest number wins. If the numbers are equal, the game ends with a draw.

You are given two strings s and t. Determine the outcome of the game provided that Yaroslav and Andrey play optimally well.


-----Input-----

The first line contains integer n (1 ≤ n ≤ 10^6). The second line contains string s — Yaroslav's word. The third line contains string t — Andrey's word.

It is guaranteed that both words consist of 2·n characters "0" and "1".


-----Output-----

Print "First", if both players play optimally well and Yaroslav wins. If Andrey wins, print "Second" and if the game ends with a draw, print "Draw". Print the words without the quotes.


-----Examples-----
Input
2
0111
0001

Output
First

Input
3
110110
001001

Output
First

Input
3
111000
000111

Output
Draw

Input
4
01010110
00101101

Output
First

Input
4
01100000
10010011

Output
Second

Difficulty: interview

Starter code:

Solutions:
n = int(input())
a, b = input(), input()
t = {i + j: 0 for i in '01' for j in '01'}
for i in range(2 * n): t[a[i] + b[i]] += 1
d = t['11'] & 1
d += (t['10'] - t['01'] + 1 - d) // 2
if d > 0: d = 1
elif d < 0: d = 2
print(['Draw', 'First', 'Second'][d])

import sys
import math            

n = int(input())
st1 = input()
st2 = input()

k = 0
res = 0
for i in range(2 * n):
    if(st1[i] == '1' and st2[i] == '1'):
        k += 1
    elif(st1[i] == '1'):
        res -= 1
    elif(st2[i] == '1'):
        res += 1

res1 = int(k / 2) + k % 2
res2 = k - res1

v = 0
if(k % 2 == 0):
    v = -1

if(res < 0):
    b = math.fabs(res)
    res1 += int(b / 2) + res % 2
elif(res > 0):
    res += v
    res2 += int(res / 2) + res % 2

if(res1 > res2):
    print("First")
elif(res1 < res2):
    print("Second")
else:
    print("Draw")

import sys
import math            

n = int(input())
st1 = input()
st2 = input()

k = 0
res = 0
for i in range(2 * n):
    if(st1[i] == '1' and st2[i] == '1'):
        k += 1
    elif(st1[i] == '1'):
        res -= 1
    elif(st2[i] == '1'):
        res += 1

res1 = int(k / 2) + k % 2
res2 = k - res1

if(res < 0):
    b = math.fabs(res)
    res1 += int(b / 2) + res % 2
elif(res > 0):
    res += (k % 2) - 1
    res2 += int(res / 2) + res % 2

if(res1 > res2):
    print("First")
elif(res1 < res2):
    print("Second")
else:
    print("Draw")

n = int(input())
a, b = input(), input()
t = {i + j: 0 for i in '01' for j in '01'}
for i in range(2 * n): t[a[i] + b[i]] += 1
d = t['11'] & 1
d += (t['10'] - t['01'] + 1 - d) // 2
if d > 0: d = 1
elif d < 0: d = 2
print(['Draw', 'First', 'Second'][d])

n = input()
s = input()
t = input()

fir = 0
sec = 0
same = 0
for (l, r) in zip(s, t):
    if l == '1':
        fir += 1
        if r == '1':
            same += 1
            sec += 1
    elif r == '1':
        sec += 1

if same % 2 != 0:
    fir += 1

if fir > sec: #or (sec - fir <= 1 and same % 2 != 0):
    print("First")
elif sec > fir + 1: # or (sec - fir <= 1 and same % 2 == 0):
    print("Second")
else:
    print("Draw")

from sys import stdin

def readLine():
  return stdin.readline();

def main():
  while True:
    n = int(readLine());
    a = readLine();
    b = readLine();
    both = 0;
    onlyA = 0; onlyB = 0;
    for i in range(2*n):
      if a[i] == '1' and b[i] == '1':
        both += 1;
      elif a[i] == '1':
        onlyA += 1;
      elif b[i] == '1':
        onlyB += 1;
    A = 0; B = 0;
    for i in range(n):
      if both:
        A += 1;
        both -= 1;
      elif onlyA:
        A += 1;
        onlyA -= 1;
      elif onlyB:
        onlyB -= 1;
      if both:
        B += 1;
        both -= 1;
      elif onlyB:
        B += 1;
        onlyB -= 1;
      elif onlyA:
        onlyA -= 1;
    if A > B:
      print( "First" );
    elif A < B:
      print( "Second" );
    else:
      print( "Draw" );
    break;

main();


from sys import stdin
#def read(): return map(int, stdin.readline().split())

n = int(stdin.readline())
a = stdin.readline()
b = stdin.readline()

cnt0 = 0
cnt1 = 0
cnt2 = 0
for i in range(n*2):
  if a[i] == '0':
    if b[i] == '0': cnt0 += 1
    else: cnt1 += 1
  elif b[i] == '0': cnt2 += 1

cnt = [ cnt0, cnt1, cnt2, 2*n - cnt0 - cnt1 - cnt2 ]

dif = 0
iter1 = iter ( ( 0b11, 0b10, 0b01, 0b00 ) )
iter2 = iter ( ( 0b11, 0b01, 0b10, 0b00 ) )
cur1 = next(iter1)
cur2 = next(iter2)
left = n
while left > 0:
  while cnt[cur1] == 0:
    cur1 = next(iter1)
  dif += (cur1>>1)
  cnt[cur1] -= 1
  
  while cnt[cur2] == 0:
    cur2 = next(iter2)  
  dif -= (cur2&1)
  cnt[cur2] -= 1
  
  jump = min ( cnt[cur1], cnt[cur2] ) if cur1 != cur2 else cnt[cur1]//2
  dif += ( (cur1>>1) - (cur2&1) )*jump
  cnt[cur1] -= jump
  cnt[cur2] -= jump
  left -= jump+1
  

if dif > 0: print( "First" )
elif dif < 0: print ( "Second" )
else: print ( "Draw" )


ii=lambda:int(input())
kk=lambda:map(int,input().split())
ll=lambda:list(kk())
n,a1,a2=ii(),input(),input()
locs = [0]*4
for i in range(2*n):
	locs[int(a1[i])+2*int(a2[i])]+=1
rm = min(locs[1],locs[2])
locs[1]-=rm
locs[2]-=rm
locs[3]=locs[3]&1
if locs[1]:
	print("First")
else:
	if locs[3]:
		if locs[2]==0:
			print("First")
		elif locs[2]<3:
			print("Draw")
		else:
			print("Second")
	else:
		if locs[2]<2:
			print("Draw")
		else:
			print("Second")

import sys
import bisect
try:
	fin = open('in')
except:
	fin = sys.stdin
input = lambda: fin.readline().strip()

n=int(input())
a=list(map(int,input()))
b=list(map(int,input()))
r=[[0,0],[0,0]]
for i in range(2*n):
	r[a[i]][b[i]] += 1
t=[0]*2
for i in range(2*n):
	j=i%2
	if r[1][1]>0:
		r[1][1]-=1
		t[j]+=[1,1][j]
	elif r[0][1]>0:
		r[0][1]-=1
		t[j]+=[0,1][j]
	elif r[1][0]>0:
		r[1][0]-=1
		t[j]+=[1,0][j]
	else:
		r[0][0]-=1
		t[j]+=[0,0][j]
x,y=t
if x>y:print("First")
elif x<y:print("Second")
else:print("Draw")

n = int(input())
s=input()
t=input()
s_1 = 0
t_1 = 0
for i in range(2*n):
    if s[i]=='1':
        s_1+=1
    if t[i]=='1':
        t_1+=1


first = 0
second = 0
r = 0
for i in range(2*n):
    if s[i]=='1' and t[i]=='0':
        first+=1
    elif s[i]=='0' and t[i]=='1':
        second+=1
    elif s[i]=='1' and t[i]=='1':
        r+=1
if r%2==1:
    first+=1
if s_1>t_1:
    print('First')
elif first==second or first==second-1:
    print('Draw')
elif first>second:
    print('First')
elif first < second:
    print('Second')