Harryxun/stf_run huggingface dataset:
from collections import deque

n, m = map(int, input().split())
g = [[] for _ in range(m)]

for _ in range(m):
    a, b = map(int, input().split())
    a -= 1
    b -= 1
    g[a].append(b)
    g[b].append(a)

start = -1
for v in range(n):
    if len(g[v]) == 0:
        continue
    start = v
    break

memo = [0] * n
memo[start] = 1
count = 0
q1 = []
q2 = []
for v in g[start]:
    if memo[v] == 1:
        continue
    memo[v] = 1
    count += 1
    if count > 2:
        break
    if count == 1:
        q1.append(v)
    elif count == 2:
        q2.append(v)

ans1 = [start]
while q1:
    node = q1.pop()
    ans1.append(node)
    flag = 0
    for nv in g[node]:
        if memo[nv] == 1:
            continue
        memo[nv] = 1
        q1.append(nv)
        flag = 1
        break
    if flag == 0:
        break

ans2 = []
while q2:
    node = q2.pop()
    ans2.append(node)
    flag = 0
    for nv in g[node]:
        if memo[nv] == 1:
            continue
        memo[nv] = 1
        q1.append(nv)
        flag = 1
        break
    if flag == 0:
        break

ans1 = ans1[::-1]

ans = []
for i in ans1:
    ans.append(i+1)
for i in ans2:
    ans.append(i+1)

print(*ans)


### FIXED CODE ###

from collections import deque

n, m = map(int, input().split())
g = [[] for _ in range(n)]

for _ in range(m):
    a, b = map(int, input().split())
    a -= 1
    b -= 1
    g[a].append(b)
    g[b].append(a)

start = -1
for v in range(n):
    if len(g[v]) == 0:
        continue
    start = v
    break

memo = [0] * n
memo[start] = 1
count = 0
q1 = deque([])
q2 = deque([])
for v in g[start]:
    if memo[v] == 1:
        continue
    count += 1
    if count > 2:
        break
    memo[v] = 1
    if count == 1:
        q1.append(v)
    elif count == 2:
        q2.append(v)

ans1 = [start]
while q1:
    node = q1.popleft()
    ans1.append(node)
    flag = 0
    for nv in g[node]:
        if memo[nv] == 1:
            continue
        memo[nv] = 1
        q1.append(nv)
        flag = 1
        break
    if flag == 0:
        break

ans2 = []
while q2:
    node = q2.popleft()
    ans2.append(node)
    flag = 0
    for nv in g[node]:
        if memo[nv] == 1:
            continue
        memo[nv] = 1
        q2.append(nv)
        flag = 1
        break
    if flag == 0:
        break

ans1 = ans1[::-1]


ans = []
for i in ans1:
    ans.append(i+1)
for i in ans2:
    ans.append(i+1)
print(len(ans))
print(*ans)
class UnionFind(object):
    def __init__(self, size):
        self.size = size
        self.parents = list(range(size))
        self.counts = [1] * size

    def find(self, x):
        parent = self.parents[x]
        if x == parent:
            return x
        else:
            self.parents[x] = self.find(parent)
            return self.parents[x]
    
    def union(self, x1, x2):
        y1 = self.find(x1)
        y2 = self.find(x2)
        if y1 != y2:
            self.parents[y2] = y1
            self.counts[y1] += self.counts[y2]

    def count(self, x):
        return self.counts[self.find(x)]
    
if __name__ == '__main__':
    n, m = map(int, input().split())
    alist = []
    blist = []
    for _ in range(m):
        a, b = map(int, input().split())
        alist.append(a - 1)
        blist.append(b - 1)

    answers = [n * (n - 1) // 2]
    uf = UnionFind(n)

    for a, b in zip(reversed(alist), reversed(blist)):
        answers.append(answers[-1])
        
        c = uf.find(a)
        d = uf.find(b)
        if c == d: 
            continue
  
        answers[-1] -= uf.count(a) * uf.count(b)
        uf.union(a, b)

    for i in reversed(range(m)):
        print(answers[i])

### FIXED CODE ###

class UnionFind(object):
    def __init__(self, size):
        self.size = size
        self.parents = list(range(size))
        self.counts = [1] * size

    def find(self, x):
        history = []
        while self.parents[x] != x:
            history.append(x)
            x = self.parents[x]
        
        for i in history: 
            self.parents[i] = x
        return x
    
    def union(self, x1, x2):
        y1 = self.find(x1)
        y2 = self.find(x2)
        if y1 != y2:
            self.parents[y2] = y1
            self.counts[y1] += self.counts[y2]

    def count(self, x):
        return self.counts[self.find(x)]
    
if __name__ == '__main__':
    n, m = map(int, input().split())
    alist = []
    blist = []
    for _ in range(m):
        a, b = map(int, input().split())
        alist.append(a - 1)
        blist.append(b - 1)

    answers = [n * (n - 1) // 2]
    uf = UnionFind(n)

    for a, b in zip(reversed(alist), reversed(blist)):
        answers.append(answers[-1])
        c = uf.find(a)
        d = uf.find(b)
        if c == d: 
            continue
  
        answers[-1] -= uf.count(a) * uf.count(b)
        uf.union(a, b)

    for i in reversed(range(m)):
        print(answers[i])
N, M, C = map(int, input().split())
B=list(map(int, input().split))
answer=0
sum=0  
for i in range(N):
  A=list(map(int, input().split))
  for j in range(M):
    sum+=B[j]*A[j]
  if (sum+C)>0:
    answer+=1
print(answer)

### FIXED CODE ###

N,M,C=map(int,input().split())
B=list(map(int,input().split()))
count=0
for i in range(N):
    A=list(map(int,input().split()))
    p=C
    for j in range(M):p+=A[j]*B[j]
    if p>0:count+=1
print(count)
from itertools import product
_ = input()
A = list(map(int, input().split()))
B = list(map(int, input().split()))
l = [a + b for a, b in product(A, B)]

if len(l) > len(set(l)):
    for i in l:
        if l.count(i) % 2 == 0:
            for _ in range(l.count(i)):
                l.remove(i)
        elif l.count(i) % 2 == 1 and l.count(i) > 1:
            for _ in range(l.count(i) - 1):
                l.remove(i)

xor = 0
for i in l:
    xor ^= i

print(xor)

### FIXED CODE ###

A, B, C = map(int, input().split())
if A + B >= C:
    print("Yes")
else:
    print("No")
#!/usr/bin/env python
from __future__ import division, print_function
from sys import stdin


def solve(a, al, m, i):
    if not m:
        return True
    if m > 0 and i < al:
        if solve(a, al, m-a[i], i+1) or solve(a, al, m, i+1):
            return True
    return False


stdin.readline()
a = [int(s) for s in stdin.readline().split()]
a.sort(reverse=True)
stdin.readline()
ms = [int(s) for s in stdin.readline().split()]

for m in ms:
    if solve(a, len(a), m, 0):
        print('yes')
    else:
        print('no')

### FIXED CODE ###

#!/usr/bin/env python
from __future__ import division, print_function
from sys import stdin
from itertools import combinations


def enum_sum_numbers(sets, s_range, r):
    for cmb in combinations(sets, r):
        yield sum(cmb)
    if r <= s_range:
        for s in enum_sum_numbers(sets, s_range, r+1):
            yield s


stdin.readline()
a = [int(s) for s in stdin.readline().split()]
stdin.readline()
ms = [int(s) for s in stdin.readline().split()]
sets = {s for s in enum_sum_numbers(a, len(a), 1)}

for m in ms:
    print('yes' if m in sets else 'no')
s=input()
t=s.replace('x','')
n=len(t)
if not(n==1 or t[:n//2]==t[(n+1)//2:][::-1]):
  print(-1)
  exit()
n=len(s)
r=n-1
l=0
ans=0
while r>l:
  nr,nl=r,l
  while s[r]=='x':r-=1
  while s[l]=='x':l+=1
  ans+=abs(nr-r-nl+l)
  while s[r]==s[l] and l<r:
    r-=1
    l+=1
print(ans)

### FIXED CODE ###

s=input()
t=s.replace('x','')
n=len(t)
if not(n==1 or t[:n//2]==t[(n+1)//2:][::-1]):
  print(-1)
  exit()
n=len(s)
r=n-1
l=0
ans=0
while r>l:
  nr,nl=r,l
  while s[r]=='x' and r>0:r-=1
  while s[l]=='x' and l<n-1:l+=1
  ans+=abs(nr-r+nl-l)
  while s[r]==s[l] and l<r:
    r-=1
    l+=1
print(ans)
import numpy as np
N,Q = map(int,input().split())
ans = np.array([0]*N)
test = np.array([1]*N)
test = np.diag(test)
p = []
x = []
for i in range(1,N):
    ai,bi = map(int,input().split())
    test[ai-1,bi-1]+=1
for j in range(Q):
    pj,xj = map(int,input().split())
    p.append(pj)
    x.append(xj)

for k in reversed(range(N)):
    check = np.where(test[k] > 0)
    test[k]+=np.sum(test[check],axis=0)
test = np.where(test > 0,1,0)
for j in range(Q):
    ans += test[p[j]-1]*x[j]
ans = ans.tolist()
print(' '.join(map(str,ans)))

### FIXED CODE ###

N,Q = map(int,input().split())
ans = [0]*N
ab = []
for i in range(1,N):
    ab.append(list(map(int,input().split())))
for j in range(Q):
    pj,xj = map(int,input().split())
    ans[pj-1] += xj
ab.sort()
for i in range(N-1):
    ans[ab[i][1]-1]+=ans[ab[i][0]-1]
print(' '.join(map(str,ans)))
a = sorted(list(map(int, input().split())))

for i in range(len(a)):
    if i == 0:
        print(a[i], end="")
    else:
        print(' '+ '{}'.format(a[i]), end="")

### FIXED CODE ###

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

for i in range(len(a)):
    if i == len(a)-1:
        print(a[i])
    else:
        print(a[i], end=" ")
from collections import deque

N = int(input())
X = [list(map(int, input().split())) for _ in range(N)]

graph = [[] for _ in range(N * N)]
ins = [0] * (N * N)

for i, nodes in enumerate(X):
    for j1, j2 in zip(nodes[:-1], nodes[1:]):
        n1 = max(i, j1 - 1) * N + min(i, j1 - 1)
        n2 = max(i, j2 - 1) * N + min(i, j2 - 1)
        graph[n1].append(n2)
        ins[n2] += 1

dist = [0] * (N * N)
visited = [False] * (N * N)
q = deque()
for i in range(N):
    visited[N * i + i] = True

for i, v in enumerate(ins):
    if v == 0:
        q.append(i)
        visited[i] = True
        dist[i] = 1

while q:
    u = q.popleft()
    for v in graph[u]:
        if visited[v]:
            continue

        ins[v] -= 1
        if ins[v] == 0:
            visited[v] = True
            dist[v] = dist[u] + 1
            q.append(v)
            
print(max(dist) if all(visited) else -1)



### FIXED CODE ###

N, *B = map(int, open(0).read().split())

ans = B[0] + B[-1]
for i in range(N - 2):
    ans += min(B[i], B[i + 1])
    
print(ans)
n, t = map(int,input().split())
mydict = {}
for i in range(n):
  a, b = map(int,input().split())
  mydict.setdefault(a, b)
sortedDict = sorted(mydict.items())
print(sortedDict)
k = 0
for j in sortedDict:
  k += 1
  if j[1] <= t:
    print(j[0])
    break
  if k == len(sortedDict):
  	print("TLE")
    break

### FIXED CODE ###

n,t = map(int, input().split())
a = []
b = 0
for i in range(n):
  l = list(map(int, input().split()))
  a.append(l)
a.sort()
for i in range(n):
  if a[i][1] <= t:
    b = a[i][0]
    break
if b > 0:
  print(b)
else:
  print("TLE")
import collections

N = int(input())
h = list(map(int, input().split()))
h.sort(reverse = True)
l = []
for i in range(0, N):
    d = []
    for j in range(0, max(0, len(l))):
        if l[j] % h[i] == 0:
            d.append(l[j])
    for k in range(0, len(d)):
        l.remove(d[k])
    l.append(h[i])
if len(collections.Counter(h)) == 1:
    l.clear()
print(len(l))

### FIXED CODE ###

X, N = map(int, input().split())
h = list(map(int, input().split()))
ans = []
for i in range(0, N+1):
    if X+i not in h:
        ans.append(X+i)
    if X-i not in h:
        ans.append(X-i)
    if ans != []:
        break
print(min(ans))
#include <bits/stdc++.h>

using namespace std;


int main() {
  unsigned long long co=0;
  int N;
  string S;
  //入力受付
  cin >> N;
  cin >> S;
  string str="";
  vector<int> n;
  int index =0;
  
  for(int i=0;i<N;i++){
    index=str.find(S[i]);
    if(index== string::npos){
      str +=S[i];
      n.push_back(2);
    }else{
      n[index]++;
    }
  }

  co = 1;
  for(int i=0; i<n.size();i++){
    co = co * n[i];
  }
  co--;  
  cout << co % 1000000007;

}


### FIXED CODE ###

N = int(input())
S = input()
  
co = 0
index =0
n =[]
str = ""

for i in range(N):
  index=str.find(S[i])
  if index == -1 :
    str += S[i]
    n.append(2)
  else :
    n[index] += 1

co = 1
for i in range(len(n)):
  co = co * n[i]
co -= 1

print(co % 1000000007)
# coding: utf-8
# Your code here!


S:str = input()

a = int(S[:2])
b = int(S[2:])

if a > 12 and b <= 12 and b > 0:
    print("YYMM")
elif a <= 12 and b > 12 and a > 0:
    print("MMYY")
elif a <= 12 and b <= 12 and a > 0 and b > 0:
    print("AMBIGUOUS")
else:
    print("NA")



### FIXED CODE ###

# coding: utf-8
# Your code here!


S = input()

a = int(S[:2])
b = int(S[2:])

if a > 12 and b <= 12 and b > 0:
    print("YYMM")
elif a <= 12 and b > 12 and a > 0:
    print("MMYY")
elif a <= 12 and b <= 12 and a > 0 and b > 0:
    print("AMBIGUOUS")
elif a == 0 and b <= 12 and b > 0:
    print("YYMM")
elif b == 0 and a <= 12 and a > 0:
    print("MMYY")
else:
    print("NA")
#!/usr/bin/env python
# coding: utf-8

import math


def main():
    param = int(raw_input())
    print "%1.6f %1.6f" % (param * param * math.pi, param * 2 * math.pi)

if __name__ == '__main__':
    main()

### FIXED CODE ###

#!/usr/bin/env python
# coding: utf-8

import math


def main():
    param = float(raw_input())
    print "%1.6f %1.6f" % (param * param * math.pi, param * 2 * math.pi)

if __name__ == '__main__':
    main()
input = input().split()
N = int(input[0])
A  = int(input[1])
B  = int(input[2])
arr = []
for index in range(A):
  arr.append('a')
for index in range(B):
  arr.append('b')

for index in range(0,N):
  if arr[index] == 'b':
    print(index)
    break
  elif index + 1 == N:
    print(N)
    break
  

### FIXED CODE ###

str = input()
a = str[0]
b = str[1]
c = str[2]

if a == b ==c:
  print('No')
elif a != b or a != c or b != c:
  print('Yes')
# coding: utf-8
N,K=map(int,input().split())
A=list(map(int,input().split()))
MOD=10**9+7

ans=1

if K==N:
    for i in range(N):
        ans*=A[i]
        ans=ans%MOD
elif max(A)<0 and K%2==1:
    A.sort(reverse=True)
    for i in range(K):
        ans*=A[i]
        ans=ans%MOD
else:
    Ap=[]
    Am=[]
    
    for i in range(N):
        if A[i]>0:
            Ap.append(A[i])
        else:
            Am.append(A[i])
        

    Ap.sort(reverse=True)
    Am.sort()
    
    if K%2==1:
        ans*=Ap.pop(0)
    
    if len(Ap)%2==1:
        Ap.append(1)
    
    P=[]
    
    for i in range(len(Ap)//2):
        P.append(Ap[i*2]*Ap[i*2+1]%MOD)
    
    for i in range(len(Am)//2):
        P.append(Am[i*2]*Am[i*2+1]%MOD)
    
    P.sort(reverse=True)
    
    for i in range(K//2):
        ans*=P[i]
        ans=ans%MOD

print(ans%MOD)

### FIXED CODE ###

# coding: utf-8
N,K=map(int,input().split())
A=list(map(int,input().split()))
MOD=10**9+7

ans=1

if K==N:
    for i in range(N):
        ans*=A[i]
        if ans>0:
            ans=ans%MOD
elif max(A)<=0 and K%2==1:
    A.sort(reverse=True)
    for i in range(K):
        ans*=A[i]
        if ans>0:
            ans=ans%MOD
else:
    Ap=[]
    Am=[]
    
    for i in range(N):
        if A[i]>0:
            Ap.append(A[i])
        else:
            Am.append(A[i])
        

    Ap.sort(reverse=True)
    Am.sort()
    
    if K%2==1 and Ap:
        ans*=Ap.pop(0)
    
    P=[]
    
    for i in range(len(Ap)//2):
        P.append(Ap[i*2]*Ap[i*2+1])
    
    for i in range(len(Am)//2):
        P.append(Am[i*2]*Am[i*2+1])
    
    P.sort(reverse=True)
    
    for i in range(K//2):
        ans*=P[i]
        ans=ans%MOD

print(ans%MOD)
N, A, B= map(int, input().split())
a = [1]*A + [0]*B
li = []
while len(li) < N:
  li.extend(a)
li_N = li[0:N-1]
print(sum(li_N))

### FIXED CODE ###

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

result = 0
result += N // (A + B) * A
result += min(N % (A + B), A)
print(result)
from collections import defaultdict, deque, Counter
def inpl(): return list(map(int, input().split()))

R, G, B, N = inpl()
ans = 0
for r in range(N//R + 1):
    for g in range(N//G + 1):
        tmp = N - R*r - G*g
        if tmp < 0:
            break
        if (tmp%B == 0):
            ans += 1
print(ans)


### FIXED CODE ###

from collections import defaultdict, deque, Counter
def inpl(): return list(map(int, input().split()))

N, K = inpl()
print(N-K+1)
n,m = map(int,input().split())
listA=[]
while True:
    try:
        listA.append(list(map(int,input().split())))

    except:
        break;
x = 0
for j in range(1,listA[0][0]+1):
    for i in range(1,n+1):
        if listA[0][j] not in listA[i]:
            break
        x += 1
print(x)

### FIXED CODE ###

n,m = map(int,input().split())
listA=[]
while True:
    try:
        listA.append(list(map(int,input().split())))

    except:
        break;
x = 0
for j in range(1,listA[0][0]+1):
    for i in range(1,n):
        listB = []
        for k in range(1,listA[i][0]+1):
          listB.append(listA[i][k])
        if listA[0][j] not in listB:
          break
    else:
    	x += 1
print(x)
n,q=map(int,input().split())
s=list(str(input()))
l=[]
r=[]
ans=0
x=[0]
for i in range(q):
  l1,r1=map(int,input().split())
  l.append(l1)
  r.append(r1)

for j in range(0,n):
  if s[j]=="A" and s[j+1]=="C":
    ans+=1
    x.append(ans)
  else:
    x.append(ans)

for k in range(0,q):
  print(x[r[k]-1]-x[l[k]-1])
      
      
      
  
  
  
  


### FIXED CODE ###

n,q=map(int,input().split())
s=list(str(input()))
l=[]
r=[]
ans=0
x=[0]
for i in range(q):
  l1,r1=map(int,input().split())
  l.append(l1)
  r.append(r1)

for j in range(0,n-1):
  if s[j]=="A" and s[j+1]=="C":
    ans+=1
    x.append(ans)
  else:
    x.append(ans)

for k in range(0,q):
  print(x[r[k]-1]-x[l[k]-1])
N = int(input())
A = list(map(int, input().split()))
S = [0]*(N+1)
for n in range(N):
    S[n+1] = S[n] + A[n]
C = [0]*(2*10**5+1)
for n in range(len(S)):
    C[S[n]] += 1
cnt = 0
for c in range(2*10**5+1):
    cnt += C[c] * (C[c] - 1) // 2
print(cnt)

### FIXED CODE ###

N = int(input())
A = list(map(int, input().split()))
S = [0]*(N+1)
for n in range(N):
    S[n+1] = S[n] + A[n]
B = {}
for s in range(len(S)):
    B[S[s]] = 0
for s in range(len(S)):
    B[S[s]] += 1
res = 0
for v in B.values():
    if v > 1:
        res += v * (v - 1) // 2
print(res)
n, k, q = map(int, input().split())
a = []
for i in range(q):
  a.append(int(input()))
  
m = [0]*n
for i in a:
  m[i] += 1
for i in range(n):
  if m[i] - q + k > 0:
    print('Yes')
  else:
    print('No')

### FIXED CODE ###

n, k, q = map(int, input().split())
a = []
for i in range(q):
  a.append(int(input()) - 1)
  
m = [0]*n
for i in a:
  m[i] += 1
for i in range(n):
  if m[i] - q + k > 0:
    print('Yes')
  else:
    print('No')
import sys
input = sys.stdin.readline
sys.setrecursionlimit(10 ** 7)

N,Q = map(int,input().split())
AB = [[int(x) for x in input().split()] for _ in range(Q)]

cup = list(range(N+1)) + [0]
se = set([0,1,2])
for a,b in AB:
    cup[a],cup[b] = cup[b],cup[a]
    for x in [a,b]:
        if cup[x] == 1:
            ball = x
    se.add(cup[ball-1])
    se.add(cup[ball+1])

se.remove(0)
answer = len(se)
print(answer)



### FIXED CODE ###

import sys
input = sys.stdin.readline
sys.setrecursionlimit(10 ** 7)

N,Q = map(int,input().split())
AB = [[int(x) for x in input().split()] for _ in range(Q)]

cup = list(range(N+1)) + [0]
se = set([0,1,2])
ball = 1
for a,b in AB:
    cup[a],cup[b] = cup[b],cup[a]
    for x in [a,b]:
        if cup[x] == 1:
            ball = x
    se.add(cup[ball-1])
    se.add(cup[ball+1])

se.remove(0)
answer = len(se)
print(answer)
N=input()

if 1<=N,N<=9:
    output=N
elif 10<=N,N<=99:
    output=9
elif 100<=N,N<=999:
    output=N-99+9
elif 1000<=N,N<=9999:
    output=900+9
elif 10000<=N,N<=99999:
    output=N-9999+900+9
else:
    output=90000+900+9
print(output)

### FIXED CODE ###

N=input()
N=N.split()
N=int(N[0])

if 1<=N and N<=9:
    output=N
elif 10<=N and N<=99:
    output=9
elif 100<=N and N<=999:
    output=N-99+9
elif 1000<=N and N<=9999:
    output=900+9
elif 10000<=N and N<=99999:
    output=N-9999+900+9
else:
    output=90000+900+9
print(output)
import sys

input = sys.stdin.readline


def get_children(parent, child_dict):
    children = child_dict.get(parent, [])
    for child in children:
        yield from get_children(child, child_dict)
    yield parent


def main():
    n, q = [int(i) for i in input().split()]
    scores = [0 for i in range(n)]
    lines = [[int(i) for i in input().split()] for _ in range(n - 1)]
    counter = [[int(i) for i in input().split()] for _ in range(q)]
    child_dict = {}
    for parent, child in lines:
        if parent not in child_dict:
            child_dict[parent] = [child]
        else:
            child_dict[parent].append(child)
    for parent, count in counter:
        for child in get_children(parent, child_dict):
            scores[child - 1] += count
    print(' '.join(map(str, scores)))


if __name__ == "__main__":
    main()


### FIXED CODE ###

import sys
 
input = sys.stdin.readline
 
 
def main():
    n, q = [int(i) for i in input().split()]
    scores = [0] * (n + 1)
    lines = sorted([[int(i) for i in input().split()] for _ in range(n - 1)])
    counter = [[int(i) for i in input().split()] for _ in range(q)]
    for index, score in counter:
        scores[index] += score
 
    for a, b in lines:
        scores[b] += scores[a]
    print(*scores[1:])
 
if __name__ == "__main__":
    main()
import turtle
k = turtle.Turtle()
k.speed(0)
k.left(90)
while True:
    x = map(int,raw_input().split(","))
    if x[0] == 0 and x[1] == 0:
        break
    else:
        k.fd(x[0])
        k.right(x[1])
        continue
print int(k.xcor())
print int(k.ycor())

### FIXED CODE ###

import math
 
x, y ,angle = 0, 0, 90
while True:
  line = map(int, raw_input().split(','))
  if line[0] == 0 and line[1] == 0: break
  radian = math.radians(angle)
  x += math.cos(radian) * line[0]
  y += math.sin(radian) * line[0]
  angle -= line[1]
 
print(int(x))
print(int(y))
a = int(input())
b = int(input())
c = int(input())
d = int(input())
L = list[a,b,c,d]
M = L.sort()
print(M[0]+M[1])

### FIXED CODE ###

a,b,c,d=[int(input()) for i in range(4)]
print(min(a,b)+min(c,d))
N = input(),strip()

if N[-1] in ['2', '4', '5', '7', '9']:
  print('hon')
elif N[-1] in ['0', '1', '6', '8']:
  print('pon')
elif N[-1] == '3':
  print('bon')


### FIXED CODE ###

N = input().strip()

if N[-1] in ['2', '4', '5', '7', '9']:
  print('hon')
elif N[-1] in ['0', '1', '6', '8']:
  print('pon')
elif N[-1] == '3':
  print('bon')
a,b=map(int,input() for i in range(2))
if (a*b)%2==0:
    print("Even")
else:
    print("Odd")

### FIXED CODE ###

a,b=map(int,input().split())
if (a*b)%2==0:
    print("Even")
else:
    print("Odd")
N = input()
1<= N(int) <=100

if N(int) % 2 ==0:
  print(float(1/2))

else:
  N(int) % 2 !=0:
  x = N(int) - (N(int)+1)/2
  print(float(x/N(int)))

### FIXED CODE ###

N = input()
1 <= int(N) <= 100

if int(N) % 2 == 0:
  print(float(1/2))

else:
  x = (int(N)+1)/2
  print(float(x/int(N)))
h,w=map(int,input().split())
a= [list(map(input().split())) for _ in range(h)]
print('#'*(w+2))
for i in range(h):
    print('#'+"".join(a[i])+'#')
print('#'*(w+2))

### FIXED CODE ###

h,w=map(int,input().split())
a= [list(input().split()) for _ in range(h)]
print('#'*(w+2))
for i in range(h):
    print('#'+"".join(a[i])+'#')
print('#'*(w+2))
A, B, K = map(int, input().split())
print(max(0, A - K), max(0, min(A + B -K, B))

### FIXED CODE ###

A, B, K = map(int, input().split())
print(A - K, B) if A > K else print(0, A + B -K) if A + B > K else print(0, 0)