CodeEff/ECCO huggingface dataset:
# Original solution
X = int(eval(input()))
X_MOD = X % 100
X_DIV = X // 100
def bfs():
    
    from collections import deque
    queue = deque([(0, 0)])
    while queue:
        sum_x, cnt_x = queue.popleft()
        #print(sum_x, cnt_x)
        if sum_x == X_MOD:
            return 1
        if sum_x > X_MOD:
            continue
        if cnt_x == X_DIV:
            continue

        queue.append((sum_x + 1,cnt_x+1))
        queue.append((sum_x + 2,cnt_x+1))
        queue.append((sum_x + 3,cnt_x+1))
        queue.append((sum_x + 4,cnt_x+1))
        queue.append((sum_x + 5,cnt_x+1))
    return 0

ans = bfs()
print(ans)

# Optimized solution
X = int(eval(input()))
X_MOD = X % 100
X_DIV = X // 100

import sys
sys.setrecursionlimit(2000)
def dfs(sum_x, cnt_x):
    if cnt_x > X_DIV:
        return False
    if sum_x == X_MOD:
        return True

    
    return dfs(sum_x+1, cnt_x+1) or dfs(sum_x+1, cnt_x+2) or dfs(sum_x+3, cnt_x+1) or dfs(sum_x+4, cnt_x+1) or dfs(sum_x+5, cnt_x+1)
    

ans = int(dfs(0,0))
print(ans)
# Original solution
X = int(eval(input()))
X_MOD = X % 100
X_DIV = X // 100

import sys
sys.setrecursionlimit(2000)
def dfs(sum_x, cnt_x):
    if cnt_x > X_DIV:
        return False
    if sum_x == X_MOD:
        return True

    
    return dfs(sum_x+1, cnt_x+1) or dfs(sum_x+1, cnt_x+2) or dfs(sum_x+3, cnt_x+1) or dfs(sum_x+4, cnt_x+1) or dfs(sum_x+5, cnt_x+1)
    

ans = int(dfs(0,0))
print(ans)

# Optimized solution
X = int(eval(input()))
X_MOD = X % 100
X_DIV = X // 100

import sys
sys.setrecursionlimit(2000)
def dfs(sum_x, cnt_x, num):
    if cnt_x > X_DIV:
        return False
    if sum_x == X_MOD:
        return True

    if num == 1:
        return dfs(sum_x+1, cnt_x+1, 1) or dfs(sum_x+1, cnt_x+2, 2) or dfs(sum_x+3, cnt_x+1, 3) or dfs(sum_x+4, cnt_x+1, 4) or dfs(sum_x+5, cnt_x+1, 5)
    if num == 2:
        return dfs(sum_x+1, cnt_x+2, 2) or dfs(sum_x+3, cnt_x+1, 3) or dfs(sum_x+4, cnt_x+1, 4) or dfs(sum_x+5, cnt_x+1, 5)
    if num == 3:
        return dfs(sum_x+3, cnt_x+1, 3) or dfs(sum_x+4, cnt_x+1, 4) or dfs(sum_x+5, cnt_x+1, 5)
    if num == 4:
        return dfs(sum_x+4, cnt_x+1, 4) or dfs(sum_x+5, cnt_x+1, 5)
    if num == 5:
        return dfs(sum_x+5, cnt_x+1, 5)
    

ans = int(dfs(0,0,1))
print(ans)
# Original solution
import sys
import itertools

input = sys.stdin.readline
X = int(eval(input()))
#a = [int(i) for i in input().split()] 
#e = [[int(i) for i in input().split()] for i in range(n)] 

maxtimes = int(X/100)+1
pools = itertools.product(list(range(maxtimes)), repeat=6)

for comb in pools:
    c = list(comb)
    price = c[0]*100+c[1]*101+c[2]*102+c[3]*103+c[4]*104+c[5]*105
    if price == X:
        print((1))
        exit()

print((0))


# Optimized solution
import sys
import itertools

input = sys.stdin.readline
X = int(eval(input()))
#a = [int(i) for i in input().split()] 
#e = [[int(i) for i in input().split()] for i in range(n)] 

maxtimes = int(X/100)+2
price = 0
for i1 in range(0, maxtimes):
    #if i1*100 > X:
        #break
    for i2 in range(0, int(X/101)+2):
        #if i1*100+i2*101 > X:
            #break
        for i3 in range(0, int(X/102)+2):
            #if i1*100+i2*101+i3*102 > X:
                #break
            for i4 in range(0, int(X/103)+2):
                #if i1*100+i2*101+i3*102+i4*103 > X:
                    #break
                for i5 in range(0, int(X/104)+2):
                    #if i1*100+i2*101+i3*102+i4*103+i5+104 > X:
                        #break
                    for i6 in range(0, int(X/105)+2):
                        price = i1*100+i2*101+i3*102+i4*103+i5*104+i6*105
                        #print(i1, i2, i3, i4, i5, i6)
                        if price == X:
                            print((1))
                            exit()
                        elif price > X:
                            break

print((0))
# Original solution
# C - 100 to 105
from collections import defaultdict


def main():
    X = int(eval(input()))
    items = tuple(range(100, 106))
    dp = defaultdict(bool)
    dp[0] = True
    while max(dp.keys()) < X:
        for possible_price in tuple(dp.keys()):
            for item in items:
                dp[possible_price + item] = True
    print((int(X in dp)))


if __name__ == "__main__":
    main()


# Optimized solution
# C - 100 to 105
def main():
    X = int(eval(input()))
    check = lambda x: x * 100 <= X <= x * 105
    is_possible = any(check(i) for i in range(X))
    print((int(is_possible)))


if __name__ == "__main__":
    main()
# Original solution
x=int(eval(input()))
a=b=c=d=e=f=0
flag=False
for a in range(x//100+1):
  for b in range(x//101+1):
    for c in range(x//102+1):
      for d in range(x//103+1):
        for e in range(x//104+1):
          for f in range(x//105+1):
            if a*100+b*101+c*102+d*103+e*104+f*105==x:
              flag=True
              print((1))
              break
          if flag:
            break
        if flag:
          break
      if flag:
        break
    if flag:
      break
  if flag:
    break
if flag==False:
  print((0))

# Optimized solution
x=int(eval(input()))
y=1  # y個購入すると題意をみたす時、1<=y<=x//100、実際に支払い可能な金額は100＊y〜105＊y
if x<100:
  print((0))
else:
  while y<=x//100+1:
    if y*100<=x<=y*105:
      print((1))
      break
    elif y>x//100:
      print((0))
      break
    else:
      y+=1
# Original solution
# coding: utf-8

import sys
import math
import collections
import itertools
from inspect import currentframe
INF = 10 ** 10
MOD = 10 ** 9 + 7
def input() : return sys.stdin.readline().strip()
def gcd(x, y) : return y if x % y == 0 else gcd(y, x % y)
def lcm(x, y) : return (x * y) // gcd(x, y)
def I() : return int(eval(input()))
def MI() : return list(map(int, input().split()))
def LI() : return [int(x) for x in input().split()]
def RI(N) : return [int(eval(input())) for _ in range(N)]
def LRI(N) : return [[int(x) for x in input().split()] for _ in range(N)]
def chkprint(*args) : names = {id(v):k for k,v in list(currentframe().f_back.f_locals.items())}; print((', '.join(names.get(id(arg),'???')+' = '+repr(arg) for arg in args)))

K = I()

N = 6
a = [100,101,102,103,104,105]
m = [1000000 for i in range(N)]

# initialize
dp = [0 if i==0 else -1 for i in range(K + 1)]

# DP
for i in range(N):
    dp_tmp = []
    for j in range(K + 1):
        if (dp[j] >= 0):
            dp_next = m[i]
        elif ((j < a[i]) or (dp_tmp[j-a[i]] <= 0)):
            dp_next = -1
        else:
            dp_next = dp_tmp[j-a[i]] - 1
        dp_tmp.append(dp_next)
    dp = dp_tmp

if dp[-1] >= 0:
    print((1))
else:
    print((0))



# Optimized solution
# coding: utf-8

import sys
import math
import collections
import itertools
from inspect import currentframe
INF = 10 ** 10
MOD = 10 ** 9 + 7
def input() : return sys.stdin.readline().strip()
def gcd(x, y) : return y if x % y == 0 else gcd(y, x % y)
def lcm(x, y) : return (x * y) // gcd(x, y)
def I() : return int(eval(input()))
def MI() : return list(map(int, input().split()))
def LI() : return [int(x) for x in input().split()]
def RI(N) : return [int(eval(input())) for _ in range(N)]
def LRI(N) : return [[int(x) for x in input().split()] for _ in range(N)]
def chkprint(*args) : names = {id(v):k for k,v in list(currentframe().f_back.f_locals.items())}; print((', '.join(names.get(id(arg),'???')+' = '+repr(arg) for arg in args)))

X = I()

for i in range(X):
    if i * 100 <= X and X <= i * 105:
        print((1))
        break
else:
    print((0))
# Original solution
n = int(eval(input()))

if(n%100==0):
    print((1))
elif(n%101==0):
    print((1))
elif(n%102==0):
    print((1))
elif(n%103==0):
    print((1))
elif(n%104==0):
    print((1))
elif(n%105==0):
    print((1))
else:
    tmp=n//100
    mod=n%100/5
    if(mod<tmp):
        print((1))
    else:
        print((0))

# Optimized solution
n = int(eval(input()))
tmp=n//100
mod=n%100/5
if(mod<=tmp):
    print((1))
else:
    print((0))
# Original solution
x = int(eval(input()))
while(x>=0):
    if x%100==0:
        print("1")
        break
    elif x<100:
        print("0")
        break
    elif x%100>=5:
        x -= 105
        continue
    else:
        x-=(x%100)+100
        continue



# Optimized solution
x = int(eval(input()))

if ((x%100)+4)//5 > x//100:
    print((0))
else:
    print((1))
# Original solution
# 品物数を決めると合計金額は100*個数～105*個数の範囲となる
# xが範囲内にあれば買い方が存在する。なければしない。
x = int(eval(input()))

for i in range(1, 1000001):
    if 100*i <= x <= 105*i:
        print((1))
        break
else:
    print((0))


# Optimized solution
X = int(eval(input()))

for i in range(1, 100001):
    if 100*i <= X <= 105*i:
        print((1))
        exit(0)
print((0))
# Original solution
#!/usr/bin/env python3
#三井住友信託銀行プログラミングコンテスト2019 C

import sys
import math
from bisect import bisect_right as br
from bisect import bisect_left as bl
sys.setrecursionlimit(1000000)
from heapq import heappush, heappop,heappushpop
from collections import defaultdict
from itertools import accumulate
from collections import Counter
from collections import deque
from operator import itemgetter
from itertools import permutations
mod = 10**9 + 7
inf = float('inf')
def I(): return int(sys.stdin.readline())
def LI(): return list(map(int,sys.stdin.readline().split()))

x = I()
y,z = divmod(x,100)
if y*5 >= z:
    print((1))
else:
    print((0))

# Optimized solution
#!/usr/bin/env python3

import sys
import math
from bisect import bisect_right as br
from bisect import bisect_left as bl
sys.setrecursionlimit(2147483647)
from heapq import heappush, heappop,heappushpop
from collections import defaultdict
from itertools import accumulate
from collections import Counter
from collections import deque
from operator import itemgetter
from itertools import permutations
mod = 10**9 + 7
inf = float('inf')
def I(): return int(sys.stdin.readline())
def LI(): return list(map(int,sys.stdin.readline().split()))

x = I()
y = x // 100
z = x % 100
if 0 <= z <= 5*y:
    print((1))
else:
    print((0))
# Original solution
x = int(eval(input()))
ans = 0
for a in range((x//100)+1):
  for b in range((x//101)+1):
    for c in range((x//102)+1):
      for d in range((x//103)+1):
        for e in range((x//104)+1):
          for f in range((x//105)+1):           
            if (100*a) + (101*b) + (102*c) + (103*d) + (104*e) + (105*f)== x:
              ans += 1
if ans == 0:
  print((0))
else:
  print((1))



# Optimized solution
x = int(eval(input()))
ans = 0
flag = False
for a in range((x//100)+1):
  for b in range((x//101)+1):
    for c in range((x//102)+1):
      for d in range((x//103)+1):
        for e in range((x//104)+1):
          for f in range((x//105)+1):           
            if (100*a) + (101*b) + (102*c) + (103*d) + (104*e) + (105*f)== x:
              ans += 1
              flag = True
              break
          if flag:
            break
        if flag:
          break
      if flag:
        break
    if flag:
      break
  if flag:
    break
  
if ans == 0:
  print((0))
else:
  print((1))
# Original solution
X = int(eval(input()))
mod = X % 100
q = int(X //100)
sum = 0
ans = 0
for i in range (0,q+1):
    for j in range (0,q+1-i):
        for k in range (0,q+1-i-j):
            for l in range (0,q+1-i-k-j):
                for m in range (0,q+1-i-j-k-l):
                    sum = i+(2*j)+(3*k)+(4*l)+(5*m)
                    if sum == mod:
                        ans = 1
print(ans)


# Optimized solution
X = int(eval(input()))
mod = X % 100
q = int(X //100)
sum = 0
ans = 0
if q >= 20:
    ans = 1
else:
    for i in range (0,q+1):
        for j in range (0,q+1-i):
            for k in range (0,q+1-i-j):
                for l in range (0,q+1-i-k-j):
                    for m in range (0,q+1-i-j-k-l):
                        sum = i+(2*j)+(3*k)+(4*l)+(5*m)
                        if sum == mod:
                            ans = 1
print(ans)
# Original solution
X = int(eval(input()))

num = X // 100

res = 0

for a in range(num+1):
    for b in range(num-a+1):
        for c in range(num-(a+b)+1):
            for d in range(num-(a+b+c)+1):
                for e in range(num-(a+b+c+d)+1):
                    for f in range(num-(a+b+c+d+e)+1):
                        if a*100 + b*101 + c*102 + d*103 + e*104 + f*105 == X:
                            res = 1
                            break

print(res)


# Optimized solution
X = int(eval(input()))

if X >= 2000:
    print((1))

else:
    num = X // 100
    res = 0

    for a in range(num+1):
        for b in range(num-a+1):
            for c in range(num-(a+b)+1):
                for d in range(num-(a+b+c)+1):
                    for e in range(num-(a+b+c+d)+1):
                        for f in range(num-(a+b+c+d+e)+1):
                            if a*100 + b*101 + c*102 + d*103 + e*104 + f*105 == X:
                                res = 1
                                break

    print(res)
# Original solution
x = int(eval(input()))

dp = [False] * (x+1)
dp[0] = True
for i in range(1,x+1):
    if i < 99:
        continue
    else:
        if dp[i-100]:
            dp[i] = True
        elif dp[i-101]:
            dp[i] = True
        elif dp[i-102]:
            dp[i] = True
        elif dp[i-103]:
            dp[i] = True
        elif dp[i-104]:
            dp[i] = True
        elif dp[i-105]:
            dp[i] = True

if dp[x]:
    print((1))
else:
    print((0))

# Optimized solution
a = int(eval(input()))
tmp01 = a/100
tmp02 = a/105
n = a//100
#print(tmp01,n,tmp02)
if tmp01 >= n >= tmp02:
  print((1))
else:
  print((0))
# Original solution
n = int(eval(input()))
L = [i for i in range(100,2001,100)]
#print(L)
LL = []
for i in L:
    n1 = int(str(i)[0])
    n2 = int(str(i)[0]+str(i)[1])
    len1 = len(str(i))
    if len1 == 3:
        LL.append((n1*100+5*n1+1,(n1+1)*100-1))
    else:
        LL.append((n2*100+5*(n2)+1,(n2+1)*100-1))
LL = [(1,99)] + LL
LL.pop()
#print(LL)
for i in range(len(LL)):
    if LL[i][0] <= n <= LL[i][1]:
        print((0))
        exit()
print((1))

# Optimized solution
n = int(eval(input()))
print((1 if divmod(n,100)[1] <= divmod(n,100)[0]*5 else 0))
# Original solution
import sys

payable = [False] * (10 ** 5 + 1)
payable[0] = True
for i in range(100,106):
    payable[i] = True

for i in range(106, 10 ** 5 + 1):
    payable[i] = any(payable[i-105:i-99])

def main():
    x = int(sys.stdin.readline().rstrip())
    print((payable[x] & 1))

if __name__ == '__main__':
    main()

# Optimized solution
import sys

def main():
    x = int(sys.stdin.readline().rstrip())
    q, r = divmod(x, 100)

    if 5 * q >= r:
        ans = 1
    else:
        ans = 0

    print(ans)

if __name__ == '__main__':
    main()
# Original solution
import itertools
import math
x = int(eval(input()))

remain = x % 100
quotient = math.floor(x/100)

items = [100, 101, 102, 103, 104, 105]
n = 6

for moneys in itertools.product(items, repeat=quotient):
    if sum(moneys) == x:
        print((1))
        exit()
print((0))


# Optimized solution
import itertools
import math
x = int(eval(input()))

remain = x % 100
quotient = math.floor(x/100)

items = [100, 101, 102, 103, 104, 105]
n = 6

for moneys in itertools.combinations_with_replacement(items, quotient):
    if sum(moneys) == x:
        print((1))
        exit()
print((0))
# Original solution
import sys
input = sys.stdin.readline
sys.setrecursionlimit(10 ** 7)

X = int(eval(input()))

l = []
for i in range(1001):
    l.extend(list(range(i*100, 105*i+1)))


if X in l:
    print((1))
else:
    print((0))


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

X = int(eval(input()))

for i in range(100000):
    if 100 * i <= X <= 100 * i + 5 * i:
        print((1))
        exit()

print((0))
# Original solution
import itertools

x = int(eval(input()))
max_c = int(x/100)

p_L = [i for i in range(100,106)]
a = list(itertools.combinations_with_replacement(p_L, max_c))

for val in a:
    if sum(val) == x:
        print((1))
        exit()
print((0))


# Optimized solution
import sys
sys.setrecursionlimit(200000)

x = int(eval(input()))
p_L = [i for i in range(100,106)]


def dfs(ans,next):
    global p_L
    global x
    global stop_memo


    ans += p_L[next]    
    if ans > x:
        return
    elif ans == x:
        print((1))
        exit()
    
    for val in range(0,6):
        dfs(ans,val)


for i in range(0,6):
    dfs(0,i)
print((0))
# Original solution
from collections import deque

def solve(X):
    if X >= 2000:
        return 1

    prices = list(range(100, 106))
    Q = deque([(0, 0)])
    while Q:
        i, pNow = Q.popleft()
        if i == 6:
            if pNow == X:
                return 1
        else:
            price = prices[i]
            for num in range(20):
                p2 = pNow + price*num
                if p2 > X: break
                Q.append((i+1, p2))

    return 0

X = int(eval(input()))

print((solve(X)))


# Optimized solution
X = int(eval(input()))

dp = [False] * (X+1)
dp[0] = True
for i in range(1, X+1):
    dp[i] = any(dp[i-(X+1)-105:i-(X+1)-99])

print((int(dp[X])))
# Original solution
import itertools
def modelAnswer(X:int):
   lis = [i for i in range(100,106)]
   C = X//100
   for p in itertools.combinations_with_replacement(lis,C):
      if(sum(p)==X):
         return 1
   return 0

def main():
   X = int(eval(input()))
   print((modelAnswer(X)))

if __name__ == '__main__':
   main()

# Optimized solution
def solve(X:int) -> int:
    if(X < 100):return 0
    first = int(str(X)[-1])
    seccond = int(str(X)[-2])
    ans = 0
    if(first >= 6):
        ans += first + 200
    elif(first > 0):
        ans += first + 100
    ans += (seccond * 2) * 105
    return 1 if(ans <= X) else 0


def main():
    X = int(eval(input()))
    print((solve(X)))

if __name__ == "__main__":
    main()
# Original solution
def main():
    n = 6
    A = (100, 101, 102, 103, 104, 105)
    M = [10**6]*6
    K = int(eval(input()))
    dp = [[-1]*(K+1) for _ in range(n+1)]
    dp[0][0] = 0
    for i in range(n):
        for j in range(K+1):
            if dp[i][j] >= 0:
                dp[i+1][j] = M[i]
            elif j < A[i] or dp[i+1][j-A[i]] <= 0:
                dp[i+1][j] = -1
            else:
                dp[i+1][j] = dp[i+1][j-A[i]] - 1
    if dp[n][K] >= 0:
        print((1))
    else:
        print((0))


if __name__ == '__main__':
    main()


# Optimized solution
def main():
    N = int(input())
    for i in range(1, N+1):
        if 100*i <= N <= 105*i:
            return print(1)
    print(0)


if __name__ == '__main__':
    main()
# Original solution
def main():
    N = int(input())
    for i in range(1, N+1):
        if 100*i <= N <= 105*i:
            return print(1)
    print(0)


if __name__ == '__main__':
    main()


# Optimized solution
def main():
    N = int(input())
    i = N//100
    if 100*i <= N <= 105*i:
        return print(1)
    else:
        return print(0)


if __name__ == '__main__':
    main()
# Original solution
X = int(eval(input()))

A = X // 100

for i_100 in range(A + 1):
    for i_101 in range(A + 1 - i_100):
        for i_102 in range(A + 1 - i_100 - i_101):
            for i_103 in range(A + 1 - i_100 - i_101 - i_102):
                for i_104 in range(A + 1 - i_100 - i_101 - i_102 - i_103):
                    for i_105 in range(A + 1 - i_100 - i_101 - i_102 - i_103 - i_104):
                        if i_100 + i_101 + i_102 + i_103 + i_104 + i_105 == A:
                            if i_100 * 100 + i_101 * 101 + i_102 * 102 + i_103 * 103 + i_104 * 104 + i_105 * 105 == X:
                                print("1")
                                exit()

print("0")




# Optimized solution
X = int(eval(input()))

A100 = 0
A105 = 0
for i in range(1001):
    A100 += 100
    A105 += 105
    if A100 <= X <= A105:
        print("1")
        exit()

print("0")
# Original solution
import sys
N=int(eval(input()))

if 100<=N<=105:
    print((1))
    sys.exit()

min_=N//105
max_= N//100 + 1
#print(min_,max_)
count=0
for m in range(min_,max_):
    X = N - 100*m
    for i in range(0,X+1):
        for j in range(0,(X-i)//2 +1):
            for k in range(0,(X-i-2*j)//3 +1):
                for l in range(0,(X-i-2*j-3*k)//4 +1):
                    count+=1
                    if count >= 10**8:
                        print((0))
                        sys.exit()
                    temp = (X-i-2*j-3*k-4*l)
                    if (temp % 5 == 0) and (m-i-j-k-l-temp//5>=0):
                        a=m-i-j-k-l-temp//5
                        t=temp // 5
                        print((1))
                        #print(N,m,a,i,j,k,l,t,100*a+101*i+102*j+103*k+104*l+105*t)
                        sys.exit()
else:
    print((0))

# Optimized solution
import sys
N=int(eval(input()))

if 100<=N<=105:
    print((1))
    sys.exit()

min_=N//105
max_= N//100 + 1
#print(min_,max_)
count=0
for m in range(min_,max_):
    X = N - 100*m
    for i in range(0,X+1):
        for j in range(0,(X-i)//2 +1):
            for k in range(0,(X-i-2*j)//3 +1):
                for l in range(0,(X-i-2*j-3*k)//4 +1):
                    count+=1
                    if count >= 5*10**7:
                        print((1))
                        sys.exit()
                    temp = (X-i-2*j-3*k-4*l)
                    if (temp % 5 == 0) and (m-i-j-k-l-temp//5>=0):
                        a=m-i-j-k-l-temp//5
                        t=temp // 5
                        print((1))
                        #print(N,m,a,i,j,k,l,t,100*a+101*i+102*j+103*k+104*l+105*t)
                        sys.exit()
else:
    print((0))
# Original solution
x = int(eval(input()))
n = x // 100
x %= 100

for i in range(n):
    if x - 5 >= 0:
        x -= 5
    elif x - 4 >= 0:
        x -= 4
    elif x - 3 >= 0:
        x -= 3
    elif x - 2 >= 0:
        x -= 2
    elif x - 1 >= 0:
        x -= 1
    else:
        break

if x == 0:
    print((1))
else:
    print((0))

# Optimized solution
x = int(eval(input()))
n = x // 100
x %= 100
if n * 5 >= x:
    print((1))
else:
    print((0))
# Original solution
x = int(eval(input()))
n = x//100 + 1
 
for i in range(n):
  for j in range(n):
     for k in range(n):
         for l in range(n):
             for m in range(n):
                 c = 100*i + 101*j + 102*k + 103*l + 104*m
                 if x >= c:
                    t = x-c
                
                    if t%105 == 0:
                        print((1))
                        exit()
                    
print((0))

# Optimized solution
x = int(eval(input()))
n = x//100

if 100*n <= x and x <= 105*n:
  print((1))
else:
  print((0))
# Original solution
import queue
x=int(eval(input()))
avail=list(range(100,106))
q=queue.Queue()
for i in avail:
    q.put(i)
while not q.empty():
    f=q.get()
    for i in range(100,106):
        if(i+f<=x and i+f not in avail):
            avail.append(i+f)
            q.put(i+f)
print((1 if x in avail else 0))

# Optimized solution
import queue
x=int(eval(input()))
avail=list(range(100,106))
ok=[False]*max(x+1,106)
q=queue.Queue()
for i in avail:
    ok[i]=True
    q.put(i)
while not q.empty():
    f=q.get()
    for i in range(100,106):
        if(i+f<=x and not ok[i+f]):
            ok[i+f]=True
            q.put(i+f)
print((1 if ok[x] else 0))
# Original solution
x = int(eval(input()))
from collections import deque
q = deque([0])

prices = [100, 101, 102, 103, 104, 105]

while q:
    cost = q.pop()

    if cost > x:
        continue
    elif any([(x-cost)%p == 0 for p in prices]):
        print((1))
        break

    for p in prices:
        q.append(cost+p)
else:
    print((0))

# Optimized solution
x = int(eval(input()))
c = 1
while True:
    if c*100 <= x <= c*105:
        print((1))
        break

    if c*100 > x:
        print((0))
        break
    c += 1
# Original solution
import sys
X = int(eval(input()))
if 1 <= X and X < 100:
    print("0")
    sys.exit()
i = 0
dp = [0]*(X+1)
dp[0] = 1
for i in range(100, X+1):
    for j in range(6):
        if dp[i-(100+j)] == 0:
            pass
        else:
            dp[i] = 1
print((dp[X]))

# Optimized solution
# import sys
X = int(eval(input()))
# if 1 <= X and X < 100:
#     print("0")
#     sys.exit()
i = 0
dp = [0]*(X+1)
dp[0] = 1
for i in range(100, X+1):
    for j in range(6):
        if dp[i-(100+j)] == 0:
            pass
        else:
            dp[i] = 1
print((dp[X]))