Harryxun/stf_run huggingface dataset:
a, b = map(int, input().split())
nega_cnt = 0
is_zero = False
for x in range(a, b+1):
        if x < 0:
                nega_cnt += 1

        elif x == 0:
                print("Zero")
                is_zero = True

if not is_zero:

        if nega_cnt % 2 == 1:
                print("Negative")
        else:
                print("Positive")
~                                                                                                  ~                                                                                                  ~                                                                                                  ~                                                                                                  ~                                                                                                  ~                                                                                                  ~                                                                                                  ~                                                                                                  ~                                                                                                  ~                                                                

### FIXED CODE ###

a, b = map(int, input().split())
nega_cnt = 0
is_zero = False
if a * b < 0:
        print("Zero")
        is_zero = True
elif b < 0 and (a-b) % 2 == 0:
        print("Negative")
else:
        print("Positive")
xin = int(input())
	
if ( X >= 30 ):
	print("yes")
else:
	print("no")


### FIXED CODE ###

xin = int(input())
	
if ( xin >= 30 ):
	print("Yes")
else:
	print("No")
n,m = list(map(int,input().split()))

dic = dict()
dicSet = set()
dicList = dict()
count = 0
countList= set()

ans = 0

for i in range(m):
    a,b = list(map(int,input().split()))
    if not(a in dicSet) and not(b in dicSet):
        dic[count] = set()
        dic[count].add(a)
        dic[count].add(b)
        dicList[a] = count
        dicList[b] = count
        countList.add(count)
        count += 1
        dicSet.add(a)
        dicSet.add(b)

    elif a in dicSet and b in dicSet:
        if dicList[a] != dicList[b]:
            dic[count] = dic[dicList[a]] | dic[dicList[b]]
            countList.add(count)
            del dic[dicList[a]]
            countList.discard(dicList[a])
            del dic[dicList[b]]
            countList.discard(dicList[b])
            dicList[a] = count
            dicList[b] = count
            count += 1

    elif a in dicSet:
        dic[dicList[a]].add(b)
        dicList[b] = dicList[a]
        dicSet.add(b)
    else:
        dic[dicList[b]].add(a)
        dicList[a] = dicList[b]
        dicSet.add(a)


ans = 1

#print(dic)
#print(countList)

for i in countList:
    long = len(dic[i])
    if long > ans:
        ans = long

print(ans)

### FIXED CODE ###

import collections

def searchRoot(n):
    par = parList[n]
    if n == par:
        if len(q) > 0:
            rootIn(q,n)
        return n
    else:
        q.append(n)
        return(searchRoot(par))

def rootIn(q,root):
    while len(q) > 0:
        parList[q.popleft()] = root

n,m = list(map(int,input().split()))
q = collections.deque()

parList = [i for i in range(n+1)]

for i in range(m):
    a,b = list(map(int,input().split()))
    aRoot = searchRoot(a)
    bRoot = searchRoot(b)
    if aRoot != bRoot:
        parList[max(aRoot,bRoot)] = min(aRoot,bRoot)
    
#print(parList)

ansDic = dict()
rootSet = set()
for i in range(1,n+1):
    root = searchRoot(i)
    if root in rootSet:
        ansDic[root] += 1
    else:
        rootSet.add(root)
        ansDic[root] = 1

ans = 1
for i in rootSet:
    if ansDic[i] > ans:
        ans = ansDic[i]

print(ans)
import math
N = int(input())
print((math.factorial(N))/(10**9 + 7))

### FIXED CODE ###

import math
N = int(input())
print(math.factorial(N) % (10**9+7))
N = int(sys.stdin.readline())
A = list(map(int, sys.stdin.readline().split()))

ans = [-1 for _ in range(N)]

count = 0
for i in range(N, 0, -1):
    tmp_sum = 0
    if N % i == 0 and N // i > 1:
        multi_max = N // i
        c = 1
        while multi_max > c:
            c += 1
            tmp_sum += ans[c * i - 1]

    # print(i, tmp_sum)
    if A[i-1] == 1:
        if tmp_sum % 2 == 0:
            count += 1
            ans[i-1] = 1
        else:
            ans[i-1] = 0
    else:
        if tmp_sum % 2 == 0:
            ans[i-1] = 0
        else:
            count += 1
            ans[i-1] = 1

print(count)
if count:
    print(" ".join(["1"] * count))

### FIXED CODE ###

import sys

N = int(sys.stdin.readline())
A = list(map(int, sys.stdin.readline().split()))

B = [-1 for _ in range(N)]
ans = []

for i in range(N, 0, -1):
    tmp_sum = 0
    tmp_i = 2 * i
    while N >= tmp_i :
        tmp_sum += B[tmp_i - 1]
        tmp_i += i

    # print(i, tmp_sum)
    if A[i-1] == tmp_sum % 2:
        B[i-1] = 0
    else:
        ans.append(i)
        B[i-1] = 1

print(len(ans))
if len(ans):
    print(" ".join(map(str, ans[::-1])))
s = input()
a = 'abcdefghijklmnopqrstuvwxyz'
ans = ''

if len(s) < 26:
    for w in a:
        if not w in s:
            ans = s + w
            break

r = ''.join(sorted(a, reverse=True))
if len(s) == 26:
    for i in range(len(s), -1, -1):
        if i == len(s) and r[:i] == s[-i:]:
            print('-1')
            exit()
        if r[:i] == s[-i:]:
            ele = i
            break
    ans = s[:-(ele+1)] + sorted(r[:ele])[0]

print(ans)

### FIXED CODE ###

s = input()
a = 'abcdefghijklmnopqrstuvwxyz'

if len(s) < 26:
    for w in a:
        if not w in s:
            print(s + w)
            exit()

if len(s) == 26:
    for i in range(len(s)-2, -1, -1):
        for j in range(len(s)-1, i, -1):
            if s[i] < s[j]:
                print(s[:i]+s[j])
                exit()

print('-1')
a,s=map(int,input().split())
if a!=2 and s!=2!:
    print('YES')
    
else:
    print('NO')


### FIXED CODE ###

a,s=map(int,input().split())
if a!=2 and s!=2:
    print('Yes')
    
else:
    print('No')
while 1:
	x,y = list(map(int,input().split()))
	if x == 0:
		break

	pp = [1,-1,0,0]
	qq = [0,0,1,-1]
	m = []
	for i in range(y):
		m.append(list(input()))
		if '@' in m[-1]:
			ss = m[-1].index('@')
			tt = i
	cnt = 0

	def move (cx,cy):
		global cnt
		if cy >= y or cy < 0 or cx >= x or cx < 0:
			return
		if m[cy][cx] == '.' or  m[cy][cx] == '@'
			cnt += 1
			m[cy][cx] = '0'
			for i in range(4):
				move(cx + pp[i],cy + qq[i])
	move(ss,tt)
	print(cnt)



### FIXED CODE ###

while 1:
	x,y = list(map(int,input().split()))
	if x == 0:
		break

	pp = [1,-1,0,0]
	qq = [0,0,1,-1]
	m = []
	for i in range(y):
		m.append(list(input()))
		if '@' in m[-1]:
			ss = m[-1].index('@')
			tt = i
	cnt = 0

	def move (cx,cy):
		global cnt
		if cy >= y or cy < 0 or cx >= x or cx < 0:
			return
		if m[cy][cx] == '.' or  m[cy][cx] == '@':
			cnt += 1
			m[cy][cx] = '0'
			for i in range(4):
				move(cx + pp[i],cy + qq[i])
	move(ss,tt)
	print(cnt)
n, m = map(int,input(),split())

if n == m:
    print("Yes")
else:
    print("No")

### FIXED CODE ###

n, m = map(int,input().split())

if n == m:
    print("Yes")
else:
    print("No")
s, w = int(input().split)

if w >= s:
  print('unsafe')
else:
  print('safe')


### FIXED CODE ###

s, w = input().split()

if int(w) >= int(s):
  print('unsafe')
else:
  print('safe')
import numpy as np
n, m = map(int, input().split())

v = np.zeros((n, m))
a = np.zeros((n,2))


for i in range(n):
    a[i] = list(map(int, input().split()))


aSorted = sorted(a, key=lambda ai: ai[0])

mc = 0
ans = 0
for ai, bi in aSorted:
    if mc + bi <= m:
        mc += bi
        ans += bi * ai
    else:
        mm = m - mc
        ans += mm * ai
        break
print(int(ans))


### FIXED CODE ###

import numpy as np
n, m = map(int, input().split())

a = np.zeros((n,2))


for i in range(n):
    a[i] = list(map(int, input().split()))


aSorted = sorted(a, key=lambda ai: ai[0])

mc = 0
ans = 0
for ai, bi in aSorted:
    if mc + bi <= m:
        mc += bi
        ans += bi * ai
    else:
        mm = m - mc
        ans += mm * ai
        break
print(int(ans))
def main():
  import numpy as np
n,k=map(int,input().split())
a=[int(i) for i in input().split()]
dp=[np.inf]*n
dp[0]=0
dp[1]=abs(a[1]-a[0])
for i in range(2,n):
    for j in range(1,k+1):
        dp[i]=min(dp[i-j]+abs(a[i]-a[i-j]),dp[i])
print(dp[-1])
if __name__ == '__main__':
	main()

### FIXED CODE ###

n,k=map(int,input().split())
a=[int(i) for i in input().split()]
dp=[10**9]*n
dp[0]=0
dp[1]=abs(a[1]-a[0])
for i in range(2,n):
    for j in range(max(0,i-k),i):
        dp[i]=min(dp[j]+abs(a[i]-a[j]),dp[i])
print(dp[-1])
from collections import *
n=int(input())
a=[]
for _ in range(n):
  a.append(input())
aset=set(a)
cnt=Counter(a)
maxi=0
for k in cnt.keys():
  maxi=max(maxi,cnt[k])

anss=[]
for s in seta:
  if cnt[s]==maxi:
    anss.append(s)
anss.sort()
for i in range(len(anss)):
  print(anss[i])

### FIXED CODE ###

from collections import *
n=int(input())
a=[]
for _ in range(n):
  a.append(input())
aset=set(a)
cnt=Counter(a)
cnt=dict(cnt)
maxi=0
for k in cnt.keys():
  maxi=max(maxi,cnt[k])

anss=[]
for s in aset:
  if cnt[s]==maxi:
    anss.append(s)
anss.sort()
for i in range(len(anss)):
  print(anss[i])
a, b =map(int, input().split())
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')
x=int(input())
result = []

for i in range(2, x):
    sum = i
    while sum * i <= 1000:
        sum = sum * i
        result.append(sum)

print(sorted(result)[-1])


### FIXED CODE ###

x=int(input())
result = [1]

for i in range(2, x):
    sum = i
    while sum * i <= x:
        sum = sum * i
        result.append(sum)

print(sorted(result)[-1])
import numpy as np
n,k,q=map(int,input().split())	
listA=[] #appendのために宣言が必要
while True:
    try:
        listA.append(list(map(int,input().split())))
    except:
        break;
a=np.repeat(k,n)
for word in listA:
    a[word]+=1
result=[]
for i in range(len(a)):
    if a[i]<=0:
        print('No')
    else:
        print('Yes')

### FIXED CODE ###

a=['Sunny', 'Cloudy', 'Rainy']
s=input()
if s==a[0]:
  print(a[1])
elif s==a[1]:
  print(a[2])
else:
  print(a[0])
a=int(input())
b=[int(input()) for i in range(a)]
c=0
d=0
for i in range(a):
  if c<b[i]:
    c=b[i]
    d=d+1
print(d)

### FIXED CODE ###

a=int(input())
b=list(map(int,input().split()))
c=0
d=0
for i in range(a):
  if c<=b[i]:
    c=b[i]
    d=d+1
print(d)
import mth
n, d = map(int,input().split())
print(math.seil(n / (2 * d + 1)))


### FIXED CODE ###

import math
n, d = map(int,input().split())
print(math.ceil(n / (2 * d + 1)))
n = int(input())
s = input()
print(max(len(set(s[:i])&set(s[i:])) for i in range(n))

### FIXED CODE ###

N = int(input())
S = input()
max = 0
for i in range(1, N-1):
  X = set(S[0:i])
  Y = set(S[i:N])
  if max < len(X&Y):
    max = len(X&Y)
print(max)
import copy
n=int(input())
a=[int(input()) for i in range(n)]
maxa=max(a)
maxa2=sorted(set(a))[-2]
maxs=a.count(maxa)
for i in range(n):
  if maxs==1:
    print(maxa if a[i]!=maxa else maxa2)
  else:
    print(maxa)

### FIXED CODE ###

import copy
n=int(input())
a=[int(input()) for i in range(n)]
maxa=max(a)
if len(set(a))!=1:
  maxa2=sorted(set(a))[-2]
maxs=a.count(maxa)
for i in range(n):
  if maxs==1:
    print(maxa if a[i]!=maxa else maxa2)
  else:
    print(maxa)
A, B, C = map(int, input().split())
k = int(input())

def Base_10_to_n(X, n):
    if (int(X/n)):
        return Base_10_to_n(int(X/n), n)+str(X%n)
    return str(X%n)


ans = 0
if a < b < c:
    ans = 1

for i in range(3**k):
    a = A
    b = B
    c = C
    i3 = Base_10_to_n(i, 3).zfill(k)
    mem = 0
    Pick = []
    for j in range(k):
        if i3[j] == '0':
            a *= 2
        elif i3[j] == '1':
            b *= 2
        elif i3[j] == '2':
            c *= 2
#        print(a, b, c)
    if a < b < c:
        ans = 1
#        print('!!')
if ans:
    print('Yes')
else:
    print('No')

### FIXED CODE ###

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

def Base_10_to_n(X, n):
    if (int(X/n)):
        return Base_10_to_n(int(X/n), n)+str(X%n)
    return str(X%n)

a = A
b = B
c = C
ans = 0
if a < b < c:
    ans = 1

for i in range(3**k):
    a = A
    b = B
    c = C
    i3 = Base_10_to_n(i, 3).zfill(k)
    mem = 0
    Pick = []
    for j in range(k):
        if i3[j] == '0':
            a *= 2
        elif i3[j] == '1':
            b *= 2
        elif i3[j] == '2':
            c *= 2
#        print(a, b, c)
    if a < b < c:
        ans = 1
#        print('!!')
if ans:
    print('Yes')
else:
    print('No')
ans = 1
ok = True
_n = int(input())
a = list(map(int,input().split()))
for i in a:
    ans *= i

if ans > 1e18:
    print(-1)
else 
    print(ans)

### FIXED CODE ###

ans = 1
ok1 = True
_n = int(input())
a = list(map(int,input().split()))
ok2 = False
if 0 in a:
    ok2 = True

for i in a:
    ans *= i
    if ans > 1e18:
        ok1 = False
        break

if ok2:
    print(0)
elif ok1:
    print(ans)
else :
    print(-1)
from collections import deque
h, w = map(int, input().split())
square = [list(input()) for i in range(h)]
INF = 100
def bfs(si, sj):
    que = deque([(si, sj)])
    d = [[INF] * w for i in range(h)]
    d[si][sj] = 0
    move = [(-1, 0), (0, 1), (1, 0), (0, -1)]
    while que:
        i, j = que.popleft()
        for mi, mj in move:
            ni, nj = i + mi, j + mj
            if 0 <= ni < h and 0 <= nj < w and square[ni][nj] = '.' and d[ni][nj] == INF:
                que.append((ni, nj))
                d[ni][nj] = d[i][j] + 1
    return d[i][j]

max_num = 0
for i in range(h):
    for j in range(w):
        if square[i][j] == '.':
            max_ij = bfs(i, j)
            max_num = max(max_num, max_ij)
print(max_num)

### FIXED CODE ###

from collections import deque
h, w = map(int, input().split())
square = [list(input()) for i in range(h)]
def bfs(si, sj):
    que = deque()
    que.append((si, sj))
    d = [[float('inf')] * w for i in range(h)]
    d[si][sj] = 0
    move = [(-1, 0), (0, 1), (1, 0), (0, -1)]
    while que:
        i, j = que.popleft()
        for mi, mj in move:
            ni, nj = i + mi, j + mj
            if 0 <= ni < h and 0 <= nj < w and square[ni][nj] != '#' and d[ni][nj] == float('inf'):
                que.append((ni, nj))
                d[ni][nj] = d[i][j] + 1
    return d[i][j]

max_num = 0
for i in range(h):
    for j in range(w):
        if square[i][j] == '.':
            max_ij = bfs(i, j)
            max_num = max(max_num, max_ij)
print(max_num)
a = int(input())
b = int(input())
c = int(input())
d = int(input())
e = int(input())
n = list(a, b, c, d, e)

sorted(n, key=lambda x: x % 10)

for i in range(1, 5):
    n[i] = 10 * (n[i]//10+1)

sm = sum(n)
print(sm)


### FIXED CODE ###

a = int(input())
b = int(input())
c = int(input())
d = int(input())
e = int(input())
n = [a, b, c, d, e]

zr = list(filter(lambda x: x % 10 == 0, n))
nz = list(filter(lambda x: x % 10 != 0, n))

nz.sort(key=lambda x: x % 10)

for i in range(1, len(nz)):
    nz[i] = 10 * (nz[i]//10+1)

print(sum(nz)+sum(zr))
# -*- coding: utf-8 -*-

import math

n = int(raw_input())

i = 1
# sqn = math.ceil(math.sqrt(n))

while math.sqrt(n) > i:
    if n % i == 0:
        ans = n / i
        ans = int(math.log10(n / i)) + 1
    i += 1
print len(str(ans))#(ans)

### FIXED CODE ###

# -*- coding: utf-8 -*-

import math

n = int(raw_input())

i = 1
# sqn = math.ceil(math.sqrt(n))

while i * i <= n:
    if n % i == 0:
        ans = n / i
        #ans = int(math.log10(n / i)) + 1
    i += 1
print len(str(ans))#(ans)
import numpy as np

r1, c1, r2, c2 = map(int, input().split())
f = np.ones((r2 + 1, c2 + 1), dtype=np.int)
g = np.ones((r2 + 1, c2 + 1), dtype=np.int)
for i, j in np.ndindex(r2, c2)
  f[i+1, j+1] = f[i, j+1] + f[i+1, j]
print(f[r1:, c2:].sum())

### FIXED CODE ###

mod = 10**9 + 7

r1, c1, r2, c2 = map(int, input().split())

fact = [1] * (r2 + c2 + 3)
inv = [1] * (r2 + c2 + 3)
inv_fact = [1] * (r2 + c2 + 3)
for i in range(2, r2 + c2 + 3):
  fact[i] = fact[i-1] * i % mod
  inv[i] = -inv[mod % i] * (mod // i) % mod
  inv_fact[i] = inv_fact[i-1] * inv[i] % mod

total = fact[r2 + c2 + 2] * inv_fact[r2 + 1] * inv_fact[c2 + 1] % mod
total -= fact[r1 + c2 + 1] * inv_fact[r1] * inv_fact[c2 + 1] % mod
total -= fact[r2 + c1 + 1] * inv_fact[c1] * inv_fact[r2 + 1] % mod
total += fact[r1 + c1] * inv_fact[r1] * inv_fact[c1] % mod

print(total % mod)
import sys
from collections import defaultdict, deque
readline = sys.stdin.readline

inf = 10 ** 5
n = int(readline())
G = defaultdict(list)
deg = [0] * n
for _ in range(n-1):
    a, b = map(int, readline().split())
    a -= 1
    b -= 1
    G[a].append(b)
    G[b].append(a)
    deg[a] += 1
    deg[b] += 1


q =  deque([deg.index(1)])
depth = [-1] * n
depth[q[0]] = 0
num = [0] * 2
d = 1
while q:
    x = q.popleft()
    for y in G[x]:
        if depth[y] == -1:
            q.append(y)
            depth[y] = d
            num[d%2] += 1
    d += 1
r0 = list(range(3, n + 1, 3))
r1 = list(range(2, n + 1, 3))
r2 = list(range(1, n + 1, 3))
odd = [i for i in range(n) if depth[i] % 2]
even = [i for i in range(n) if not depth[i] % 2]
ans = [0] * n
if num[0] > n / 3 or num[1] > n / 3:
    for i in odd:
        if r1:
            ans[i] = r1.pop()
        else:
            ans[i] = r0.pop()
    for i in even:
        if r2:
            ans[i] = r2.pop()
        else:
            ans[i] = r0.pop()
elif num[0] > n / 3:
    for i in even:
        ans[i] = r0.pop()
    for i in odd:
        if r0:
            ans[i] = r0.pop()
        elif r1:
            ans[i] = r1.pop()
        elif r2:
            ans[i] = r2.pop()
elif num[0] > n / 3:
    for i in odd:
        ans[i] = r0.pop()
    for i in even:
        if r0:
            ans[i] = r0.pop()
        elif r1:
            ans[i] = r1.pop()
        elif r2:
            ans[i] = r2.pop()
print(*ans)



### FIXED CODE ###

import sys
from collections import defaultdict, deque
readline = sys.stdin.readline

inf = 10 ** 5
n = int(readline())
G = defaultdict(list)
deg = [0] * n
for _ in range(n-1):
    a, b = map(int, readline().split())
    a -= 1
    b -= 1
    G[a].append(b)
    G[b].append(a)

q = deque([0])
depth = [-1] * n
depth[0] = 0
d = 1
while q:
    x = q.popleft()
    d = depth[x] + 1
    for y in G[x]:
        if depth[y] == -1:
            q.append(y)
            depth[y] = d
r0 = list(range(3, n + 1, 3))
r1 = list(range(1, n + 1, 3))
r2 = list(range(2, n + 1, 3))
odd = [i for i in range(n) if depth[i] % 2]
even = [i for i in range(n) if not depth[i] % 2]
if len(even) <= n // 3:
    odd, even = even, odd
if len(odd) <= n // 3:
    r = r2 + r1 + r0
else:
    r = r1 + r0 + r2
ans = [0] * n
for i in odd:
    ans[i] = r.pop()
for i in even:
    ans[i] = r.pop()
# print(f'{even=}{odd=}{num=}')
print(*ans)
N, K = map(int, input().split())
h = [int(x) for x in input().split()]

INF = float('inf')
dp = [INF for _ in range(N+10)]

# initial state
dp[0] = 0

for i in range(N):
    for j in range(1, min(K+1, len(h)-i)):
        dp[i+j] = min(dp[i] + abs(h[j+i] - h[i]), dp[i+j])

print(dp[N-1])

### FIXED CODE ###

N = int(input())
h = [int(n) for n in input().split()]


cost = [0] * (N+1)

for i in range(N):
    if i == 0:
        cost[i] = 0
    elif i == 1:
        cost[i] = abs(h[i] - h[i-1])

    if i >= 2:
        cost[i] = min(cost[i-1] + abs(h[i] - h[i-1]), cost[i-2] + abs(h[i] - h[i-2]))

print(cost[N-1])
n = int(input())
d = {}
for _ in range(n) :
    s = input()
    if s in d :
        d[s] += 1
    else :
        d[s] = 1

mx = max(d.values())
for s in sorted(k for k in d if d[k] == m) :
    print(s)


### FIXED CODE ###

n = int(input())
d = {}
for _ in range(n) :
    s = input()
    if s in d :
        d[s] += 1
    else :
        d[s] = 1

mx = max(d.values())
for s in sorted(k for k in d if d[k] == mx) :
    print(s)
import math
N, K = list(map(int, input().split()))
result = 0
for i in range(1, N+1):
  result += (1/N) * 0.5 ** (math.floor(math.log(K//i, 2))+1)
print("{:.12}".format(result))

### FIXED CODE ###

import math
N, K = list(map(int, input().split()))

i = 1
result = 0
for i in range(1, N+1):
  temp = 1 / N
  now = i
  while now < K:
    now *= 2
    temp *= 0.5
  result += temp
  
print(result)
n, m = list(map(int, input().split()))
a = [input() for i in range(m)]
b = []
c = []
total_act = 0
total_act2 = 1
total = 1
b.append(int(a[0]))
for i in range(len(a) - 1):
    b.append(int(a[i + 1]) - int(a[i]) - 1)
print(b)
for i in range(max(b)):
    total_act3 = total_act2 + total_act
    total_act2 = total_act
    total_act = total_act3
    c.append(total_act)
print(c)
for i in b:
    total *= c[i - 1]

total *= c[n - int(a[-1]) - 1]
print(total % 1000000007)


### FIXED CODE ###

n, m = list(map(int, input().split()))
a = [input() for i in range(m)]
b = []
c = []
total_act = 0
total_act2 = 1
total = 1
if m == 0:
    for i in range(n + 1):
        if str(i) in a:
            total *= total_act
            total_act = 0
            total_act2 = 1
        else:
            total_act3 = total_act2 + total_act
            total_act2 = total_act
            total_act = total_act3
    total *= total_act
    print(total % 1000000007)
else:
    b.append(int(a[0]))
    for i in range(len(a) - 1):
        b.append(int(a[i + 1]) - int(a[i]) - 1)
        if int(a[i + 1]) - int(a[i]) - 1 == 0:
            print(0)
            exit()
    b.append(n - int(a[-1]))

    for i in range(max(b)):
        total_act3 = total_act2 + total_act
        total_act2 = total_act
        total_act = total_act3
        c.append(total_act)

    for i in b:
        total *= c[i - 1]
    print(total % 1000000007)
# Snack
from collections import deque
import numpy as np
import math


# input
A, B = map(int, input().split())
A, B = max(A,B), min(A,B)

# solve
# -----------------
# 約数列挙
def make_divisor_list(num):
    if num < 1:
        return []
    elif num == 1:
        return [1]
    else:
        divisor_list = deque()
        divisor_list.append(1)
        for i in range(2, num // 2 + 1):
            if num % i == 0:
                divisor_list.append(i)
        divisor_list.append(num)

        return list(divisor_list)
# -----------------

div_A = make_divisor_list(A)
div_B = make_divisor_list(B)

for b in [b for b in div_B if b not in div_A]:
    if A * b % B == 0:
        res = A * b
        break

# output
print(res)

### FIXED CODE ###

# Snack
from collections import deque
import numpy as np
import math


# input
A, B = map(int, input().split())
A, B = max(A,B), min(A,B)

# solve
# -----------------
# 約数列挙
def make_divisor_list(num):
    if num < 1:
        return []
    elif num == 1:
        return [1]
    else:
        divisor_list = deque()
        divisor_list.append(1)
        for i in range(2, num // 2 + 1):
            if num % i == 0:
                divisor_list.append(i)
        divisor_list.append(num)

        return list(divisor_list)
# -----------------

div_A = make_divisor_list(A)
div_B = make_divisor_list(B)

rem = [b for b in div_B if b not in div_A]

if len(rem) != 0:
    for b in [b for b in div_B if b not in div_A]:
        if A * b % B == 0:
            res = A * b
            break
else:
    res = A

# output
print(res)
a, op, b = map(input().split())
if op == '+':
  print(int(a)+int(b))
else:
  print(int(a)-int(b))

### FIXED CODE ###

a, op, b = input().split()
if op == '+':
  print(int(a)+int(b))
else:
  print(int(a)-int(b))
def gcd(a,b):
    if a < b:
        a,b = b,a
    if a % b == 0:
        return b
    else:
        return gcd(b,(a % b))

N,X=map(int,input().split())
inputcities=list(map(int, input().split()))
cities=[abs(inputcities[i]-X) for i in range(N)].sort()
D=cities[0]
for i in range(N):
  D=gcd(D,cities[i])
print(D)

### FIXED CODE ###

def gcd(a,b):
    if a < b:
        a,b = b,a
    if a % b == 0:
        return b
    else:
        return gcd(b,(a % b))
 
N,X=map(int,input().split())
inputcities=list(map(int, input().split()))
cities=[abs(inputcities[i]-X) for i in range(N)]
cities.sort()
D=cities[0]
for i in range(N):
  D=gcd(D,cities[i])
print(D)