# strとして入力。後で小数点以下の一番左の桁が欲しいため
X = list(map(int,input().split('.')))
# S[1]:小数点以下の数字
# 小数点以下が500未満(=1~4)ならそのまま整数部を出力
if int(X[1]) < 500:
print(X[0])
# そうじゃないなら、整数部に1足したものを出力
else:
print(int(X[0])+1)
# 入力
X=float(input())
# 0.500の時に発生する誤差を木にして、0.001未満の小さな数を足した上でroundしたものを出力
print(int(round(S+0.0005,0)))
from decimal import Decimal,ROUND_HALF_UP
# 入力
X = input()
print(Decimal(X).quantize(Decimal('0'), rounding=ROUND_HALF_UP))
# 入力、セット用意
N = int(input())
s = set()
# ループ内で配列化せずにstrのままsetに無理やり突っ込んでいく
for i in range(N):
s.add(input())
# 長さ=種類数
print(len(s))
from collections import deque
# 入力
N = int(input())
need_d = dict()
study_time = [0]*(N+1)
# 習得にかかる時間を配列で、習得に必要な技をdictで管理。
for i in range(N):
L = list(map(int, input().split()))
study_time[i+1] = L[0]
need_d[i+1] = set(L[2:])
time = study_time[N]
que = deque()
studied_s = set()
que.append(N)
# BFSと同じように、timeを足していく
while que:
next_waza = que.popleft()
for i in need_d[next_waza]:
if i not in studied_s:
que.append(i)
studied_s.add(i)
time += study_time[i]
print(time)
import math
# 入力
N = int(input())
# X,Yをそれぞれ別の配列で管理
X_L = []
Y_L = []
magic_S = set()
for i in range(N):
X, Y = map(int, input().split())
X_L.append(X)
Y_L.append(Y)
# a地点、b地点を全探索
for a in range(N):
for b in range(N):
# 同じ場所から同じ場所ならスキップ
if a == b:
continue
# a地点を(0,0)とした時に、b地点の座標を出す
from_X = X_L[a]
from_Y = Y_L[a]
to_X = X_L[b]
to_Y = Y_L[b]
x = to_X - from_X
y = to_Y - from_Y
# 最大公約数で割る。x,yが0の時にパターン分岐。
if x != 0 and y != 0:
gcd_num = math.gcd(x, y)
x = x // gcd_num
y = y // gcd_num
magic_S.add((x, y))
elif x == 0:
magic_S.add((0, abs(y) / y))
elif y == 0:
magic_S.add((abs(x) / x, 0))
# 魔法の数を数えて終わり!
print(len(magic_S))