Harryxun/stf_run huggingface dataset:
import networkx as nx

### FIXED CODE ###

class UnionFind():
    def __init__(self, n):
        self.n = n
        self.parents = [-1] * n

    def find(self, x):
        if self.parents[x] < 0:
            return x
        else:
            self.parents[x] = self.find(self.parents[x])
            return self.parents[x]

    def union(self, x, y):
        x = self.find(x)
        y = self.find(y)

        if x == y:
            return

        if self.parents[x] > self.parents[y]:
            x, y = y, x

        self.parents[x] += self.parents[y]
        self.parents[y] = x

    def size(self, x):
        return -self.parents[self.find(x)]

    def same(self, x, y):
        return self.find(x) == self.find(y)

    def members(self, x):
        root = self.find(x)
        return [i for i in range(self.n) if self.find(i) == root]

    def roots(self):
        return [i for i, x in enumerate(self.parents) if x < 0]

    def group_count(self):
        return len(self.roots())

    def all_group_members(self):
        return {r: self.members(r) for r in self.roots()}

    def __str__(self):
        return '\n'.join('{}: {}'.format(r, self.members(r)) for r in self.roots())

n,m,k=map(int, input().split())
friend=[[] for i in range(n+1)]
block_count=[0]*(n+1)
uf=UnionFind(n+1)
for i in range(1,m+1):
    a,b=map(int, input().split())
    friend[a].append(b)
    friend[b].append(a)
    uf.union(a,b)

for i in range(1,k+1):
    a,b=map(int, input().split())
    if uf.same(a,b)==True:
        block_count[a]+=1
        block_count[b] += 1

answer=[0]*(n)
for i in range(1,n+1):
    answer[i-1]=uf.size(i)-len(friend[i])-block_count[i]-1
    #print(uf.size(i))

print(" ".join(map(str,answer)))
#print(friend)
#print(uf)
#print(block_count)
s=input()

cnt=0

for i in range(1,len(s):
    if s[i]==s[i-1]:
        cnt += 1

if cnt > 1:
    print("Bad")
else:
    print("Good")

### FIXED CODE ###

s=input()

cnt=0

for i in range(1,len(s)):
    if s[i]==s[i-1]:
        cnt += 1

if cnt >= 1:
    print("Bad")
else:
    print("Good")
H, W = map(int, input().split())
N = 0
a_map = []
for i in range(H):
    a = list(map(int, input().split()))
    a_map.append(a)
result = []
for i in range(H):
    for j in range(W):
        if a_map[i][j]%2==1:
            if j < W - 1:
                N += 1
                result.append([i + 1, j + 1, i + 1, j + 2])
                a_map[i][j + 1] += 1;
                a_map[i][j] -= 1;
            elif i < H - 1:
                N += 1;
                result.append([i + 1, j + 1, i + 2, j + 1])
                a_map[i][j] -= 1;
                a_map[i + 1][j] += 1;
print(N)
for a in result:
    print(a[0], a[1], a[2], a[3])

### FIXED CODE ###

N, X = map(int, input().split())
x_list = list(map(int, input().split()))

x_list.sort()
def gcd(a, b):
    if a >= b:
        return a if b == 0 else gcd(b, a % b)
    else:
        return gcd(b, a)


D = abs(X-x_list[0])
for i in range(0, N):
    D = gcd(D,  abs(x_list[i]-X))

print(D)
import functools
import math

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

max_koyaku_num = functools.reduce(math.gcd, a)  #最大公約数って英語でなんて言うん？

print(max_koyaku_num)

### FIXED CODE ###

import functools

def gcd(num1, num2):
    r = num1 % num2
    while (r > 0):
        num1 = num2
        num2 = r
        r = num1 % num2
    return num2

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

max_koyaku_num = functools.reduce(gcd, a)

print(max_koyaku_num)
def gcd(a, b):
    while a:
        a, b = b % a, a
    return b


N = int(input())
A = list(map(int, input().split()))
b = -1

for i in range(N):
    a = gcd(r, A[i]) if r != 0 else A[i]
    if a < r:
        b = i
    r = a

r3 = 0
for i in range(N):
    if i == b - 1:
        continue
    r3 = gcd(r3, A[i]) if r3 != 0 else A[i]

r4 = 0
for i in range(N):
    if i == b:
        continue
    r4 = gcd(r4, A[i]) if r4 != 0 else A[i]

d = sorted([(gcd(A[i], A[i + 1]), i) for i in range(N - 1)])
t = d[0][1]
r1 = 0
for i in range(N):
    a = A[i-1] if i == t + 1 else A[i]
    if r1 == 0:
        r1 = a
    else:
        r1 = gcd(r1, a)
r2 = 0
for i in range(N):
    a = A[i+1] if i == t else A[i]
    if r2 == 0:
        r2 = a
    else:
        r2 = gcd(r2, a)
print(max(r1, r2, r3, r4))


### FIXED CODE ###

def gcd(a, b):
    while a:
        a, b = b % a, a
    return b


N = int(input())
A = list(map(int, input().split()))
r = 0
b = -1

for i in range(N):
    a = gcd(r, A[i]) if r != 0 else A[i]
    if a < r:
        b = i
    r = a

r3 = 0
for i in range(N):
    if i == b - 1:
        continue
    r3 = gcd(r3, A[i]) if r3 != 0 else A[i]

r4 = 0
for i in range(N):
    if i == b:
        continue
    r4 = gcd(r4, A[i]) if r4 != 0 else A[i]

d = sorted([(gcd(A[i], A[i + 1]), i) for i in range(N - 1)])
t = d[0][1]
r1 = 0
for i in range(N):
    a = A[i-1] if i == t + 1 else A[i]
    if r1 == 0:
        r1 = a
    else:
        r1 = gcd(r1, a)
r2 = 0
for i in range(N):
    a = A[i+1] if i == t else A[i]
    if r2 == 0:
        r2 = a
    else:
        r2 = gcd(r2, a)
print(max(r1, r2, r3, r4))
word = list(input())
#print(word) ['5', '5', '7']
a=0
b=0
for i in range(3):
	if word[i]==5:
    	a=a+1
for i in range(3):
	if word[i]==7:
      	b=b+1
if a=2 and b=1:
	print("YES")
else:
  	print("NO")

### FIXED CODE ###

word = list(map(int,input().split()))
#print(word) ['5', '5', '7']
a=0
b=0
for i in range(3):
    if word[i]==int(5):
        a=a+1
for i in range(3):
    if word[i]==int(7):
        b=b+1
if a==2 and b==1:
	print("YES")
else:
  	print("NO")
#AIsing2020 d
 
import sys
input = sys.stdin.readline
 
N = int(input())
X = list(input().rstrip())
X10 = int('0b'+"".join(X),2)
X10_num1 = X.count('1')
X10_pulse = X10%(X10_num1+1)
X10_ninus = X10%(X10_num1-1)


for i in range(N,0,-1):
    a = X10
    if a>>(i-1) & 1:
        a -= 2**(i-1)
        amari = (X10_ninus - (2**(i-1))%(X10_num1-1))%(X10_num1-1)
    else:
        a += 2**(i-1)
        amari = (X10_pulse + (2**(i-1))%(X10_num1+1))%(X10_num1+1)
    nc = amari
    if a ==0:
        co = 0
    else:
        co = 1
        while nc >0:
            bin_str = bin(nc)
            cou1 = bin_str.count('1')
            nc = nc%cou1
            co +=1
    
    print(co)


### FIXED CODE ###

#AIsing2020 d

def f(n):
        cnt = 0
        while n:
            cnt+= 1
            n = n%bin(n).count('1')
        return cnt

def main():
    N = int(input())
    X = input()
    X10 = int(X,2)
    X10_num1 = X.count('1')
    X10_pulse = X10%(X10_num1+1)
    X10_ninus = X10%(X10_num1-1) if X10_num1 >1 else 0


    for i in range(N,0,-1):
        j = N-i
        if (X[j] == '1') and X10_num1 >1:
            mod = X10_num1-1
            amari = (X10_ninus - pow(2,i-1,mod))%(mod) 
        elif (X[j] == '1') and X10_num1 ==1:
            print(0)
            continue
        else:
            mod = X10_num1+1
            amari = (X10_pulse + pow(2,i-1,mod))%(mod)

        print(1+f(amari))


main()
N = int(input())

power = 1
mod = 10 ** 9 + 7

for i in range(1, N + 1):
    power *= i
	power %= mod
print(power)


### FIXED CODE ###

N = int(input())

power = 1
mod = 10 ** 9 + 7

for i in range(1, N + 1):
    power *= i
    power %= mod
print(power)
n=int(input())
a=26
b=1
import string
array=list(string.ascii_lowercase)
while n>a:
  b+=1
  a+=26**b
if b==1:
  print(array[n-1])
else:
  c=b-1
  d=n-26**c
  for i in range(c-1):
    brray=[0]
    crray=[d]
    brray[i+1]=crray[i]//(26**(c-i))
    crray[i+1]=crray[i]%(26**(c-i))
  ans=[]
  for j in range(1,c):
    ans[j]=array[brray[j]]
  ans.append(array[crray[c]-1])
  print( ''.join( ans ) )

### FIXED CODE ###

n=int(input())
a=26
b=1
import math
import string
array=list(string.ascii_lowercase)
while n>a:
  b+=1
  a+=26**b
if b==1:
  print(array[n-1])
else:
  c=b-1
  d=n-a
  brray=[0]
  crray=[d]
  for i in range(c):
    brray.append(math.ceil(crray[i]/(26**(c-i))))
    crray.append(crray[i]%(26**(c-i)))
  ans=array[brray[1]-1]
  if c>1:
    for j in range(2,b):
      ans=ans+array[brray[j]-1]
  ans=ans+array[crray[c]-1]
  print(ans)
import sys
def I(): return int(sys.stdin.readline())
def LI(): return list(map(int,sys.stdin.readline().split()))
mod = 10**9 + 7
inf = float('inf')
ans = int(0)

N, K = LI()
S = str(input())
S = S + "2"
d1 = []
d0 = []
k = S[0]
if k=="0":
    d1.append(0)
cou = int(1)
for i in range(N):
    if S[i]!=S[i+1]:
        if S[i]=="0":
            d0.append(cou)
        if S[i]=="1":
            d1.append(cou)
        cou = int(1)
    else:
        cou +=1

#print(d1)
#print(d0)

ansC = []
t = 2*K+1
newN = len(d1)
if len(d1)==1 or d0==[] or K>=N//2+1:
    ansC.append(N)

if newN!=len(d0):
    d0.append(0)
    d0.append(0)
sumd1 = [0]*(newN+t)
sumd0 = [0]*(newN+t)
for i in range(newN):
    sumd1[i+1] = d1[i]
    sumd0[i+1] = d0[i]
for i in range(newN+1):
    sumd1[i+1] += sumd1[i]
    sumd0[i+1] += sumd0[i]

#for i in range(max(newN-K+1,K)):
if ansC==[] and (newN - K + 1)>=0:
    for i in range(newN - K + 1):
        ans = (sumd1[i + K + 1] - sumd1[i]) + (sumd0[i + K] - sumd0[i])
        ansC.append(ans)

print(max(ansC))
#print(ansC)
#print(sumd1)
#print(sumd0)

### FIXED CODE ###

import sys
def I(): return int(sys.stdin.readline())
def LI(): return list(map(int,sys.stdin.readline().split()))
mod = 10**9 + 7
inf = float('inf')
ans = int(0)

N, K = LI()
S = str(input())
S = S + "2"
d1 = []
d0 = []
k = S[0]
if k=="0":
    d1.append(0)
cou = int(1)
for i in range(N):
    if S[i]!=S[i+1]:
        if S[i]=="0":
            d0.append(cou)
        if S[i]=="1":
            d1.append(cou)
        cou = int(1)
    else:
        cou +=1

#print(d1)
#print(d0)

ansC = []
t = 2*K+1
newN = len(d1)
if len(d1)==1 or d0==[] or K>=N//2+1:
    ansC.append(N)

if newN!=len(d0):
    d0.append(0)
    d0.append(0)
sumd1 = [0]*(newN+t+5)
sumd0 = [0]*(newN+t+5)
for i in range(newN):
    sumd1[i+1] = d1[i]
    sumd0[i+1] = d0[i]
for i in range(newN+1):
    sumd1[i+1] += sumd1[i]
    sumd0[i+1] += sumd0[i]

#for i in range(max(newN-K+1,K)):
if ansC==[] and (newN - K + 1)>=1:
    for i in range(newN - K + 1):
        ans = (sumd1[i + K + 1] - sumd1[i]) + (sumd0[i + K] - sumd0[i])
        ansC.append(ans)
else:
    ansC.append(N)
print(max(ansC))
D,N = map(int, input().split())

if N == 100:
    N = 101

if D == 0:
    print(N)
elif D == 1:
    print(100 * N)
else:
    print(100 ** 2 * N)
print(n)

### FIXED CODE ###

D,N = map(int, input().split())

if N == 100:
    N = 101

if D == 0:
    print(N)
elif D == 1:
    print(100 * N)
else:
    print(100 ** 2 * N)
import sys

y = sys.stdin.readline()
y = int(y)

x = sys.stdin.readline()

x_list = int(x.split(" "))

for i in range(1, y + 1):
  if list(i) < list(i - 1):
    for j range(i - 1, 0):
      if list(j) < list(i):
        list(i),  list(j+1) = list(j+1), list(i)
        break
  for k in range(0, y):
    print list(j)

### FIXED CODE ###

import sys

def insertionSort(x_list,y):
  for i in range(1, y):
    v = x_list[i]
    j = i - 1
    while j >= 0 and x_list[j] > v:
      x_list[j + 1] = x_list[j]
      j -= 1
    x_list[j+1] = v
    for k in range(0, y):
      print x_list[k],
    print

y = sys.stdin.readline()
y = int(y)

x = sys.stdin.readline()

x_list = x.split(" ")

for i in range(y):
  x_list[i] = int(x_list[i])

for k in range(0, y):
  print x_list[k],
print

insertionSort(x_list, y)
import functools
import fractions

N = int(input())
A = [int(i) for i in input().split()]

num = 1

if len(A) == 2:
  print(max(A))
else:
  for i in range(len(A)):
    g = functools.reduce(fractions.gcd, A[:i] + A[i+1:])
    num = g if g > num else num
  print(num)


### FIXED CODE ###

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

n = t // a
print(n * b)
# coding: utf-8

while True:
	data = map(int, raw_input().split())
	a = data[0]
	b = data[1]
	c = data[2]
	d = data[3]
	e = data[4]
	f = data[5]

	x = (c*e-b*f)*1.0 / (a*e-b*d)
	if x == -0.000:
		x = 0.000
	if b != 0:
		y = (c-a*x)/b
	else:
		y = (f-d*x)/e
	if y == -0.000:
		y = 0.000

	print("{:.3f} {:.3f}".format(x,y))

### FIXED CODE ###

# coding: utf-8

while True:
	try:
		data = map(int, raw_input().split())
		a = data[0]
		b = data[1]
		c = data[2]
		d = data[3]
		e = data[4]
		f = data[5]

		x = (c*e-b*f)*1.0 / (a*e-b*d)
		if x == -0.000:
			x = 0.000
		if b != 0:
			y = (c-a*x)/b
		else:
			y = (f-d*x)/e
		if y == -0.000:
			y = 0.000

		print("{:.3f} {:.3f}".format(x,y))
	except EOFError:
		break
import math
N = input()
A = map(int,input().split())

for e in A:
    d = dict((i, A.count(i)) for i in set(A))
    d[e]-=1
    
    ans = 0
    for i in list(d):
        if d[i] < 2:
            continue
        ans += d[i]*(d[i]-1)/2
    print(int(ans))
    

### FIXED CODE ###

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

ad = {}
for i in range(n) :
    if a[i] in ad :
        ad[a[i]] += 1
    else :
        ad[a[i]] = 1

ans = 0
for v in ad.values():
    ans += v*(v-1)//2

for i in range(n):
    v = ad[a[i]]
    print(ans-v*(v-1)//2+(v-1)*(v-2)//2)
S = input()
week_list = ["SUN", "MON", "TUE", "WED", "THE", "FRI", "SAT"]
print(7 - week_list.index(S))

### FIXED CODE ###

S = input()
week_list = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"]
print(7 - week_list.index(S))
r = input()
s = 3 * (r ** 2)
print(s)

### FIXED CODE ###

r = int(input())
s = 3 * r * r
print(s)
import math

s = input().split()
a, b = int(s[0]), int(s[1])


def lcm(x, y):
    return (x * y) // math.gcd(x, y)


print(lcm(a, b))


### FIXED CODE ###

import fractions
a,b=map(int, input().split())
f=fractions.gcd(a,b)
f2=a*b//f
print(f2)
n=int(input())
s=input()
sum=0
for k in range(n):
  for j in range(k):
    for i in range(j):
      if(((j-i)!=(k-j))&(s[i]!=s[j])&(s[j]!=s[k])&(s[k]!=s[i])):

        sum=sum+1
          
print(sum)

### FIXED CODE ###

n = int(input())
for i in range(3):
  n_i=n//10**(2-i)
  if(n_i==7):
    print('Yes')
    break
  if(i==2):
    print('No')
  n=n-n_i*10**(2-i)
N,L = map(int,input().split())
l = []
ll = []
for i in range(1,N+1):
  l.append(L+i-1)
  ll.append(abs(L+i-1))
a = l.index(min(ll))
print(sum(l)-l[a])


### FIXED CODE ###

n, l = map(int, input().split())
a = []
b = []
for i in range(1,n+1):
    a.append(l+i-1)
    b.append(abs(l+i-1))
x = b.index(min(b))
print(sum(a)-a[x])
N,M=input().split()
N,M=int(N),int(M)

guess = [] #答えの候補を保管
for i in range(N):
    guess.append(-1)
exits=True #答えが存在するか
ans=-1

for i in range(M):
    s,c=input().split()
    #桁数sを直感に一致させるために-1
    s,c=int(s)-1,int(c)
    if guess[s]==-1 or guess[s]==c:
        guess[s]=c
    else:
        exits=False

#1桁目が0or与えられてないならば答えは存在しない
if guess[0]==0 or guess[0]==-1:
    exits=False 

if exits:
    ans=0
    for i in range(N):
        ans+= guess[i]*(10**(N-i-1)) if not guess[i]==-1 else 0

#1桁の場合はcがそのまま答え
if N==1:
    ans=c

print(ans)

### FIXED CODE ###

N, M = input().split()
N, M = int(N), int(M)

if N == 1 and M == 0:  # 1桁の数字指定なし
    ans = 0
elif N == 1:  # 1桁で数字指定有り:最初のcと同じものがずっと来ればans=c
    s, c = input().split()
    c = int(c)
    ans = c
    for m in range(M-1):
        temp_s, temp_c = input().split()
        if not int(temp_c) == c:
            ans = -1
            break

elif M == 0:  # 2桁以上で数字指定無し:10or100
    ans = 10**(N-1)
else:  # 2桁以上かつ数字指定有り:指定された数字から答えを出す
    # ただし、1桁目についての指定で追加処理
    ans_exist = True  # 矛盾なく答えが存在するか
    guess = []
    for n in range(N):
        guess.append(-1)
        # guess=[-1,-1,-1]
    for m in range(M):
        s, c = input().split()
        s, c = int(s), int(c)

        # すでに別の数字が指定されている時
        if not guess[s-1] == -1 and not guess[s-1] == c:
            ans_exist = False
            break
        # 1桁目に0が指定された時
        elif s == 1 and c == 0:
            ans_exist = False
            break
        else:
            guess[s-1] = c

    # 矛盾なく解が存在するなら指定がある桁を加算
    if ans_exist:
        # 1桁目に指定が無いなら1桁目は1
        ans = 10**(N-1) if guess[0] == -1 else 0
        for n in range(N):
            if not guess[n] == -1:
                ans += guess[n]*(10**(N-1-n))
    else:
        ans = -1

print(ans)
a = int(input())
b = int(input())
if a <= 8 and b <= 8:
    print("Yay!")
else:
    print(":(")

### FIXED CODE ###

a, b = map(int, input().split())
if a <= 8 and b <= 8:
    print("Yay!")
else:
    print(":(")
K = int(input())
W = [1, 1, 1, 2, 1, 2, 1, 5, 2, 2, 1, 5, 1, 2, 1, 14, 1, 5, 1, 5, 2, 2, 1, 15, 2, 2, 5, 4, 1, 4, 1, 51]
K = k + 1
print(W[K])

### FIXED CODE ###

K = int(input())
K = K - 1
a = [1, 1, 1, 2, 1, 2, 1, 5, 2, 2, 1, 5, 1, 2, 1, 14, 1, 5, 1, 5, 2, 2, 1, 15, 2, 2, 5, 4, 1, 4, 1, 51]
print(a[K])
N,M=map(int,input().split())
numbers=[' ',]*N
kotae=0
for a in range(M):
    suuji=[]
    s,c=map(int,input().split())
    if numbers[s-1]==' ':
        numbers[s-1]=c
    else:
        if numbers[s-1]==c:
            continue
        else:
            print('-1')
            kotae+=1
            break

for a in range(3):
    if numbers[a]==' ':
        numbers[a]=0
if numbers[0]==0:
    del numbers[0]
    if numbers[0]==0:
        del numbers[0]
        if numbers[0]==0:
            del numbers[0]
if kotae==0:
    if len(numbers)!=N:
        print(-1)
    else:
       moji=''
       for a in numbers:
           moji+=str(a)
       print(moji)
       

### FIXED CODE ###

N,M=map(int,input().split())
numbers=[' ',]*N
kotae=0
for a in range(M):
    suuji=[]
    s,c=input().split()
    if numbers[int(s)-1]==' ':
        numbers[int(s)-1]=int(c)
    else:
        if numbers[int(s)-1]==int(c):
            continue
        else:
            print('-1')
            kotae+=1
            break
if numbers[0]==' ' and N==3:
    numbers[0]=1
if N==2 and numbers[0]==' ':
    numbers[0]=1
for a in range(N):
    if numbers[a]==' ':
        numbers[a]=0
if N==3:
    if numbers[0] == 0:
        del numbers[0]
        if numbers[0] == 0:
            del numbers[0]
            if numbers[0] == 0:
                del numbers[0]
if N==2:
    if numbers[0] == 0:
        del numbers[0]
        if numbers[0] == 0:
            del numbers[0]
if kotae==0:
    if len(numbers)!=N:
        print('-1')
    else:
       moji=''
       for a in numbers:
           moji+=str(a)
       print(int(moji))
A, B = map(int,input().split())

def primes(n):
    if n==1:return [1]
    
    p_max = int(n**0.5)
    primes = list(range(3,n+1,2))
    n_primes = len(primes)
    
    for i, prime in enumerate([j for j in primes if j!=0]):
        for k in range(i+prime, n_primes, prime):
            primes[k] = 0
    prime_a = list([j for j in primes if j!=0])
    
    if n%2==0:prime_a.append(2)
      
    for i, prime_ai in enumerate(prime_a):
        if n%prime_ai!=0:prime_a[i]=0
    return list([j for j in prime_a if j!=0])

a = set(primes(A))
b = set(primes(B))

c = a & b
print(len(c)+1)

### FIXED CODE ###

A, B = map(int,input().split())

def gcd(x, y):
    if y==0:return x
    else:
        return gcd(y, x%y)

def factorize(n):
    b = 2
    fct = []
    
    while b*b <=n:
        while n%b==0:
            n //=b
            fct.append(b)
        b+=1
    if n>1:fct.append(n)
    return fct
      
c = gcd(A, B)

print(len(set(factorize(c)))+1)
x=input()
y=input()
if x==y:
  print("=")
elif x < y:
  print("<")
else:
  print(">")

### FIXED CODE ###

a,b =input().split()
if a == b:
  print("=")
elif a < b:
  print("<")
else:
  print(">")
s = input()
k = int(input())

if s[0] != '1':
    print(s[1])


### FIXED CODE ###

s = input()
k = int(input())

for i in range(k):
    if s[i] != '1':
        print(s[i])
        break
else:
    print('1')
from collections import Counter

N = int(input())
A = list(map(int, input().split()))

    
c = Counter(l)


ans = []
for i, j in c.items():
    if i >= 2:
        ans.append[j]

ans.sort()    
print(ans[-1]*ans[-2])

### FIXED CODE ###

import collections
N = int(input())
A = list(map(int, input().split()))
a = collections.Counter(A)
ans = [0, 0]
for i in a.keys():
    if a[i] >= 2:
        ans.append(i)
    if a[i] >= 4:
        ans.append(i)
ans.sort()
print(ans[-1]*ans[-2])
n = int(input())
s = str(input())
ans = 0
for i in range(1,len(s)):
    #print(t[:i], t[i:])
    left = set(list(t[:i]))
    right = set(list(t[i:]))
    kyoutuu = left & right
    ans = max(ans,len(list(kyoutuu)))
print(ans)

### FIXED CODE ###

n = int(input())
t = str(input())
ans = 0
for i in range(1,len(t)):
    #print(t[:i], t[i:])
    left = list(t[:i])
    right = list(t[i:])
    #print(left,right)
    kyoutuu = set(left) & set(right)
    j = len(list(kyoutuu))
    if ans < j:
        ans = j
print(ans)
a,b,c=map(int,input().split())
d=[i for i in range(a,b+1)]
count=0
for i in range(len(d)):
    if c%i==0:
        count+=1
print(count)

### FIXED CODE ###

a,b,c=map(int,input().split())
d=[i for i in range(a,b+1)]
count=0
for i in d:
    if c%i==0:
        count+=1
print(count)
n, x = map(int, index().split())
list_n = [0]*x
for i in range(0, x-1)
    list_n[i] = input()
    
min = min(list_n)
sum = sum(list_n)

x -= sum
result = int(x/min) + n
print(result)

### FIXED CODE ###

n, x = map(int, input().split())
list_m = [1]*n
for i in range(0, n):
    list_m[i] = int(input())
    
min = min(list_m)
sum = sum(list_m)

x -= sum

result = int(x/min) + n
print(result)
n = int(input())
s = input()
k = int(input())
l = []

for i in range(n):
    l += s[i]

for i in range(n):
    if l[k-1] != l[i]:
        l[i] = '*'

for i in range(n):
    a += ''.join(l[i])
    
print(a)

### FIXED CODE ###

n = int(input())
s = input()
k = int(input())
l = []
a = ''

for i in range(n):
    l += s[i]

for i in range(n):
    if l[k-1] != l[i]:
        l[i] = '*'

for i in range(n):
    a += ''.join(l[i])
    
print(a)
import collections

N, K = map(int, input().split())
R, S, P = map(int, input().split())
T = list(input())

for i in range(N-K):
    if T[i] == T[i+K]:
        T[i+K] = "a"

c = colelctions.Counter(T)

print(c["r"]*P + c["s"]*R + c["p"]*S)

### FIXED CODE ###

import collections

N, K = map(int, input().split())
R, S, P = map(int, input().split())
T = list(input())

for i in range(N-K):
    if T[i] == T[i+K]:
        T[i+K] = "a"

c = collections.Counter(T)

print(c["r"]*P + c["s"]*R + c["p"]*S)
a = input().split()

N = int(a[0])
M = int(a[1])

print(N)
print(M)

b = 0
c = []

while True:
  if b >= M:
  	break
  e = input(int())
  c.append(e)
  b += 1

d = 0
  
for i in c:
  d += int(i)

if d > N:
  print(-1)
else:
  print(N-d)

### FIXED CODE ###

a = input().split()

N = int(a[0])


c = input().split()



d = 0
  
for i in c:
  d += int(i)

if d > N:
  print(-1)
else:
  print(N-d)
# dp
N = int(input())
A = [list(map(int, input().split())) for _ in range(2)]

dp = [[0]*(N) for _ in range(N)]
dp[0][0] = A[0][0]
dp[1][0] = A[0][0] + A[1][0]
for i in range(1, N):
  dp[0][i] = dp[0][i-1] + A[0][i]
  dp[1][i] = max(dp[0][i],dp[1][i-1]) + A[1][i]
  
print(dp[1][-1])  

### FIXED CODE ###

n = int(input())
a = list(map(int, input().split()))
b = list(map(int, input().split()))
ans = max(sum(a[:i+1]) + sum(b[i:]) for i in range(n))
print(ans)
n = int(raw_input())
max = -10^9
min = 10^9
ans = -10^9
for i in range(n):
 x[i] = int(raw_input())
for s in range(n-1):
 for t in range(n-1):
  if ans < (x[n-1-s]-x[n-1-t]):
   ans=x[n-1-s]-x[n-1-t]
print ans

### FIXED CODE ###

n = int(raw_input())
max = -10**9
x1 = input() 
min = x1

for i in range(n-1):
 x = int(raw_input())

 if max < x-min:
  max = x- min
 if x< min:
  min = x
  
print max
from collections import Counter
 
#まずは代入
n = int(input())
s = [input() for _ in range(n)]
c = collections.Counter(s).most_common() #もうリストにしちゃった<3
#この時点で, cは個数が多い順に並んでる
#たとえば入力例1だと
#[('vet', 2), ('beet', 2), ('beat', 1), ('bed', 1), ('bet', 1)]
 
ans = []
max = c[0][1] #最大の個数は何か? 数値を代入
for item,count in c:
	if count==max:
		ans.append(item)
	else:
		break #もうこれ以下は弱いのしかないのでbreakします
 
ans.sort() #辞書順に並べる
 
for i in range(len(ans)):
	print(ans[i])

### FIXED CODE ###

n = int(input())
s = []
for i in range(n):
  s.append(input())
s.sort()
k = 0
f = s
maxk = 0
for i in range(n-1):
  if s[i] == s[i+1]:
    k = k+1
    if k == maxk :
      maxk = k
      f.append(s[i])
    elif k > maxk :
      maxk = k
      f = [s[i]]
  else:
    k = 0
for i in range(len(f)):
  print(f[i])