Recently, a chaotic virus Hexadecimal advanced a new theorem which will shake the Universe. She thinks that each Fibonacci number can be represented as sum of three not necessary different Fibonacci numbers.

Let's remember how Fibonacci numbers can be calculated. F0 = 0, F1 = 1, and all the next numbers are Fi = Fi - 2 + Fi - 1.

So, Fibonacci numbers make a sequence of numbers: 0, 1, 1, 2, 3, 5, 8, 13, ...

If you haven't run away from the PC in fear, you have to help the virus. Your task is to divide given Fibonacci number n by three not necessary different Fibonacci numbers or say that it is impossible.

Input

The input contains of a single integer n (0 ≤ n < 109) — the number that should be represented by the rules described above. It is guaranteed that n is a Fibonacci number.

Output

Output three required numbers: a, b and c. If there is no answer for the test you have to print "I'm too stupid to solve this problem" without the quotes.

If there are multiple answers, print any of them.

Examples

Input

3


Output

1 1 1


Input

13


Output

2 3 8

Difficulty: EASY

Solutions:
import sys
import math
input = sys.stdin.readline

def inp():
	return int(input())

def inara():
	return list(map(int, input().split()))

def insr():
	s = input()
	return list(s[:len(s) - 1])

def invr():
	return map(int, input().split())
fib = [0, 1]
now = 0
while now <= 1000000000:
	now = fib[-1] + fib[-2]
	fib.append(now)
n = inp()
for a in fib:
	for b in fib:
		for c in fib:
			if a + b + c == n:
				print(a, b, c)
				exit(0)
print("I'm too stupid to solve this problem")


n = int(input())
print(0, 0, n)


x = int(input())
print('0', '0', x)


from sys import stdin, stdout
import math, sys
from itertools import permutations, combinations
from collections import defaultdict, deque, OrderedDict
from os import path
import bisect as bi
import heapq

def yes():
	print('YES')

def no():
	print('NO')
if path.exists('input.txt'):
	sys.stdin = open('input.txt', 'r')
	sys.stdout = open('output.txt', 'w')

	def I():
		return int(input())

	def In():
		return map(int, input().split())
else:

	def I():
		return int(stdin.readline())

	def In():
		return map(int, stdin.readline().split())

def fib():
	(a, b) = (0, 1)
	d = {}
	d[0] = 1
	d[1] = 1
	for i in range(100):
		(a, b) = (b, a + b)
		d[b] = 1
	return d

def main():
	try:
		n = I()
		if d.get(n, 0) != 0:
			print(0, 0, n)
		else:
			ans = []
			for i in range(100):
				for j in range(100):
					if d.get(n - d[i] + d[j], 0) != 0:
						ans = [d[i], d[j], d[n - d[i] + d[j]]]
						break
						break
			if len(ans) != 0:
				print(*ans)
			else:
				print("I'm too stupid to solve this problem")
	except:
		pass
M = 998244353
P = 1000000007
d = fib()
for _ in range(1):
	main()


class Code:

	def __init__(self):
		self.n = int(input())

	def process(self):
		print(0, 0, self.n)
code = Code()
code.process()


def main():
	s = 0
	l = 0
	p = 1
	n = int(input())
	a = [0, 1]
	i = 2
	while s <= n:
		s = l + p
		l = p
		p = s
		a.append(s)
	for k in a:
		for b in a:
			for c in a:
				if k + b + c == n:
					print(k, b, c)
					return
	print("I'm too stupid to solve this problem")
	return
main()


k = int(input())
print('0 0 ' + str(k))


def readln():
	return tuple(map(int, input().split()))
(n,) = readln()
print(0, 0, n)


n = int(input())
print('0 0 {}'.format(n))


n = int(input())
f = [0] * 44
i = 1
f[0] = 0
f[1] = 1
while f[i] < 1000000000 and i != 44:
	i += 1
	f[i] = f[i - 1] + f[i - 2]
	f.append(f[i])
for i in range(len(f)):
	for j in range(len(f)):
		for k in range(len(f)):
			if f[i] + f[j] + f[k] == n:
				print(f[i], f[j], f[k])
				exit()
print('I' + chr(39) + 'm too stupid to solve this problem')


print('0 0 {}'.format(int(input())))


import sys
input = sys.stdin.readline
n = int(input())
print(0, 0, n)


print(0, 0, int(input()))


n = int(input())
f1 = 0
f2 = 1
s = 1
if n == 0:
	print(0, 0, 0)
	exit()
while s < n:
	s = f1 + f2
	f1 = f2
	f2 = s
if s != n:
	print("I'm too stupid to solve this problem")
else:
	print(0, 0, n)


import sys
input = sys.stdin.readline
n = int(input())
relativne = [0, 1]
while relativne[-1] < 10 ** 9:
	relativne.append(relativne[-1] + relativne[-2])
for x in relativne:
	for y in relativne:
		for z in relativne:
			if x + y + z == n:
				print(x, y, z)
				sys.exit()
print("I'm too stupid to solve this problem")


import sys
import math
n = int(sys.stdin.readline())
print('0 0 ' + str(n))


fibbo = [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578, 5702887, 9227465, 14930352, 24157817, 39088169, 63245986, 102334155, 165580141, 267914296, 433494437, 701408733]
n = int(input())
status = 0
if n in fibbo:
	print(0, 0, n)
elif n / 3 in fibbo:
	print(n // 3, n // 3, n // 3)
else:
	for i in range(n, 0, -1):
		if i in fibbo:
			print(i, end=' ')
			break
	for j in range(n - i, 0, -1):
		if j in fibbo:
			print(j, end=' ')
			break
	for k in range(n - i - j, 0, -1):
		if k in fibbo:
			print(k)
			break


import sys
import math
import collections
from collections import deque
from functools import reduce
from sys import stdin, stdout, setrecursionlimit
setrecursionlimit(2 ** 20)

def factors(n):
	return list(set(reduce(list.__add__, ([i, n // i] for i in range(1, int(n ** 0.5) + 1) if n % i == 0))))
T = 1
for _ in range(T):
	n = int(stdin.readline())
	print(*[0, 0, n])


def main():
	n = int(input())
	print('0 0', n)
	return
main()


import sys
input = sys.stdin.readline

def swaparr(arr, a, b):
	temp = arr[a]
	arr[a] = arr[b]
	arr[b] = temp

def gcd(a, b):
	if b == 0:
		return a
	return gcd(b, a % b)

def nCr(n, k):
	if k > n - k:
		k = n - k
	res = 1
	for i in range(k):
		res = res * (n - i)
		res = res / (i + 1)
	return int(res)

def upper_bound(a, x, lo=0):
	hi = len(a)
	while lo < hi:
		mid = (lo + hi) // 2
		if a[mid] < x:
			lo = mid + 1
		else:
			hi = mid
	return lo

def primefs(n):
	primes = {}
	while n % 2 == 0 and n > 0:
		primes[2] = primes.get(2, 0) + 1
		n = n // 2
	for i in range(3, int(n ** 0.5) + 2, 2):
		while n % i == 0 and n > 0:
			primes[i] = primes.get(i, 0) + 1
			n = n // i
	if n > 2:
		primes[n] = primes.get(n, 0) + 1
	return primes

def power(x, y, p):
	res = 1
	x = x % p
	if x == 0:
		return 0
	while y > 0:
		if y & 1 == 1:
			res = res * x % p
		y = y >> 1
		x = x * x % p
	return res

def swap(a, b):
	temp = a
	a = b
	b = temp
	return (a, b)

def find(x, link):
	p = x
	while p != link[p]:
		p = link[p]
	while x != p:
		nex = link[x]
		link[x] = p
		x = nex
	return p

def union(x, y, link, size):
	x = find(x, link)
	y = find(y, link)
	if size[x] < size[y]:
		(x, y) = swap(x, y)
	if x != y:
		size[x] += size[y]
		link[y] = x

def sieve(n):
	prime = [True for i in range(n + 1)]
	p = 2
	while p * p <= n:
		if prime[p] == True:
			for i in range(p * p, n + 1, p):
				prime[i] = False
		p += 1
	return prime
MAXN = int(1000000.0 + 5)

def spf_sieve():
	spf[1] = 1
	for i in range(2, MAXN):
		spf[i] = i
	for i in range(4, MAXN, 2):
		spf[i] = 2
	for i in range(3, ceil(MAXN ** 0.5), 2):
		if spf[i] == i:
			for j in range(i * i, MAXN, i):
				if spf[j] == j:
					spf[j] = i

def factoriazation(x):
	ret = {}
	while x != 1:
		ret[spf[x]] = ret.get(spf[x], 0) + 1
		x = x // spf[x]
	return ret

def int_array():
	return list(map(int, input().strip().split()))

def str_array():
	return input().strip().split()
MOD = int(1000000000.0) + 7
CMOD = 998244353
INF = float('inf')
NINF = -float('inf')
n = int(input())
print(0, 0, n)


n = int(input())
a = 0
b = 1
print(0, 0, n)


import math

def ps(a):
	s = int(math.sqrt(a))
	return s * s == a

def check(a):
	return ps(5 * a * a + 4) or ps(5 * a * a - 4)
t = int(input())
if check(t) == True:
	print(0, 0, t)
else:
	print("I'm too stupid to solve this problem")


x = int(input())
z = [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578, 5702887, 9227465, 14930352, 24157817, 39088169, 63245986, 102334155, 165580141, 267914296, 433494437, 701408733]
check = True
for i in range(0, len(z)):
	if check == False:
		break
	for l in range(0, len(z)):
		if check == False:
			break
		for k in range(0, len(z)):
			if z[i] + z[l] + z[k] == x:
				check = False
				print(z[i], z[l], z[k])
				break


n = int(input())
print(0, end=' ')
print(0, end=' ')
print(n, end=' ')


from functools import lru_cache

@lru_cache(maxsize=50)
def fib(n):
	if n <= 1:
		return 0
	if n in (2, 3):
		return 1
	return fib(n - 1) + fib(n - 2)
fib_nums = set()
for i in range(1, 47):
	fib_nums.add(fib(i))
inp = int(input())
if inp in fib_nums:
	print(0, 0, inp)
else:
	print("I'm too stupid to solve this problem")


n = int(input())
print(f'0 0 {n}')


x = int(input())
print('0 0 {}'.format(x))


p = int(input())
print(0, 0, p)


def main():
	N = int(input())
	print(0, 0, N)
main()


a = 0
b = 1
ans = [a, b]
while True:
	c = ans[-1] + ans[-2]
	if c <= 10 ** 9:
		ans.append(c)
	else:
		break
n = int(input())
for i in ans:
	for j in ans:
		for k in ans:
			if i + j + k == n:
				print(i, j, k)
				exit()
print("I'm too stupid to solve this problem")


from sys import stdin, stdout
import math
from itertools import permutations, combinations
from collections import defaultdict
from bisect import bisect_left

def L():
	return list(map(int, stdin.readline().split()))

def In():
	return map(int, stdin.readline().split())

def I():
	return int(stdin.readline())
P = 1000000007
lis = [0, 1]
for i in range(2, 100):
	lis.append(lis[i - 1] + lis[i - 2])
n = I()
print(0, 0, n)


n = int(input())
i = 0
k = 1
if n == 0:
	exit(print(0, 0, 0))
while 1:
	p = i + k
	if p == n:
		exit(print(0, 0, p))
	elif p > n:
		exit(print(0, k, n - k))
	i = k
	k = p


numb = int(input())
print(0, 0, numb)


import sys
from os import path
if path.exists('input.txt'):
	sys.stdin = open('input.txt', 'r')
	sys.stdout = open('output.txt', 'w')
n = int(input())
print('0 0', n)


import sys, os, io, time, copy
if os.path.exists('input.txt'):
	sys.stdin = open('input.txt', 'r')
	sys.stdout = open('output.txt', 'w')
import math

def main():
	n = int(input())
	print(0, 0, n)
main()


class Code:

	def __init__(self):
		self.n = int(input())
		self.dp = []

	def fib(self):
		self.dp.extend([0, 1, 1])
		while self.dp[-1] <= self.n:
			self.dp.append(self.dp[-1] + self.dp[-2])

	def process(self):
		self.fib()
		flag = 0
		for i in range(0, len(self.dp)):
			for j in range(0, len(self.dp)):
				for k in range(0, len(self.dp)):
					if self.dp[i] + self.dp[j] + self.dp[k] == self.n:
						flag = 1
						print(self.dp[i], self.dp[j], self.dp[k])
						return
					elif self.dp[i] + self.dp[j] + self.dp[k] > self.n:
						break
				if self.dp[i] + self.dp[j] > self.n:
					break
		if flag == 0:
			print("I'm too stupid to solve this problem")
code = Code()
code.process()


a = int(input())
print(0, 0, a)


import math

def checkPerfectSquare(n):
	sqrt = int(math.sqrt(n))
	if pow(sqrt, 2) == n:
		return True
	else:
		return False

def isFibonacciNumber(n):
	res1 = 5 * n * n + 4
	res2 = 5 * n * n - 4
	if checkPerfectSquare(res1) or checkPerfectSquare(res2):
		return True
	else:
		return False
num = int(input())
if isFibonacciNumber(num):
	M = [0, 0, num]
	print(*M)
else:
	(n1, n2) = (0, 1)
	count = 0
	L = []
	if nterms == 0:
		L.append(n1)
	else:
		while count < nterms + 1:
			L.append(n1)
			nth = n1 + n2
			n1 = n2
			n2 = nth
			count += 1
	print(L)

	def func(L):
		for i in L:
			for j in L:
				for k in L:
					if i + j + k == nterms:
						return [i, j, k]
	n = func(L)
	if n:
		print(*n)
	else:
		print("I'm too stupid to solve this problem")


N = int(input())
print(f'0 0 {N}')


import sys
n = int(sys.stdin.readline())
fibs = [0]
(fib_0, fib_1) = (0, 1)
while fib_1 <= n:
	fibs.append(fib_1)
	(fib_0, fib_1) = (fib_1, fib_0 + fib_1)

def check(n):
	for i in range(len(fibs)):
		for j in range(i, len(fibs)):
			for k in range(j, len(fibs)):
				(a, b, c) = (fibs[i], fibs[j], fibs[k])
				if a + b + c == n:
					return f'{a} {b} {c}'
	return None
answer = check(n)
if answer:
	sys.stdout.write(answer)
else:
	sys.stdout.write("I'm too stupid to solve this problem")


print(str(0) + ' ' + str(0) + ' ' + str(int(input())))


n = int(input())

def fib(n):
	l1 = [0, 1, 1]
	h = 1
	while h <= n:
		h = l1[-1] + l1[-2]
		l1.append(h)
	return l1
l = fib(n)

def f(n):
	for i in l:
		for j in l:
			for k in l:
				if i + j + k == n:
					return [i, j, k]
print(*f(n))


import sys
input = lambda : sys.stdin.readline()
int_arr = lambda : list(map(int, input().split()))
str_arr = lambda : list(map(str, input().split()))
get_str = lambda : map(str, input().split())
get_int = lambda : map(int, input().split())
get_flo = lambda : map(float, input().split())
mod = 1000000007

def solve():
	pass
n = int(input())
print('0 ' + '0 ' + str(n))


from sys import stdin, stdout
n = int(input())
(a, b, c) = (0, 1, 1)
d = [0, 1]
while c < n:
	c = a + b
	d.append(c)
	a = b
	b = c
for i in d:
	x = i
	f = 0
	for j in d:
		y = j
		for z in d:
			if x + y + z == n:
				f = 1
				break
		if f == 1:
			break
	if f == 1:
		break
if f == 1:
	print(x, y, z)
else:
	print("I'm too stupid to solve this problem")


import functools
n: int = int(input())
print('0 0 ' + str(n))


k = [0, 0]
k.append(int(input()))
print(*k)


print(' '.join([str(x) for x in [0, 0, int(input())]]))


def main(N):
	print(0, 0, N)

def text():
	with open('input.txt', 'r') as f:
		t = int(f.readline().rstrip())
		while t:
			N = int(f.readline().rstrip())
			arr = list(map(int, f.readline().rstrip().split()))
			main(N, arr)
			t -= 1

def normal():
	N = int(input())
	main(N)
normal()


n = int(input())
fib = [0, 1]
while fib[-1] + fib[-2] <= n:
	fib.append(fib[-1] + fib[-2])

def solve():
	for i in fib:
		for j in fib:
			for k in fib:
				if i + j + k == n:
					return (i, j, k)
				if i + j + k > n:
					break
			if i + j + k > n:
				break
		if i + j + k > n:
			break
print(*solve())


n = int(input())
if n == 0:
	print(0, 0, 0)
	exit(0)
else:
	print(0, 0, n)


n = int(input())
f = []
(a, b) = (0, 1)
while a <= n:
	f.append(a)
	(a, b) = (b, a + b)
for i in f:
	for j in f:
		for k in f:
			if i + j + k == n:
				print(i, j, k)
				exit()
print("I'm too stupid to solve this problem")


z = [0, 1]
x = int(input())
a = 1
b = 0
s = 0
while 1:
	s = a + b
	z.append(s)
	b = a
	a = s
	if s >= x:
		break
if x not in z:
	print('I' + chr(39) + 'm too stupid to solve this problem')
else:
	print('{} {} {}'.format(0, 0, x))


n = int(input())
s = 0
lst = [0]
a = 0
b = 1
while s <= n - 1:
	s = a + b
	lst.append(s)
	a = b
	b = s
k = 0
l = len(lst)
for i in range(l):
	y = n - lst[i]
	for j in range(l):
		x = y - lst[j]
		for _ in range(l):
			if x == lst[_]:
				print(lst[i], lst[j], lst[_])
				k = 1
				break
		if k == 1:
			break
	if k == 1:
		break
if k == 0:
	print("I'm too stupid to solve this problem")


n = 50
f = [0, 1, 1]
for i in range(len(f), n):
	f.append(f[i - 2] + f[i - 1])
k = int(input())
print('0 0 {}'.format(k))


z = int(input())
all_fib = [0, 1, 1]
while all_fib[-1] < z:
	all_fib.append(all_fib[-2] + all_fib[-1])

def check(num):
	result = [0, 0, 0]
	for i in all_fib:
		for j in all_fib:
			for k in all_fib:
				if i + j + k == z:
					return (i, j, k)
	return result
x = check(z)
if x == [0, 0, 0]:
	print("I'm too stupid to solve this problem")
else:
	print(x[0], x[1], x[2])


a = [0, 1]
while a[-1] < 10 ** 9:
	a.append(a[-1] + a[-2])
n = int(input())
no = True
for i in a:
	for j in a:
		for k in a:
			if i + j + k == n and no:
				print(i, j, k)
				no = False
if no:
	print("I'm too stupid to solve this problem")


def f(num):
	global fib
	for i in fib:
		for j in fib:
			for k in fib:
				if i + j + k == num:
					print(i, j, k)
					return
	print("I'm too stupid to solve this problem")
n = int(input())
fib = [0, 1]
while fib[-1] + fib[-2] < 1000000000.0:
	fib.append(fib[-1] + fib[-2])
f(n)


n = int(input())
fib = [0, 1]
while True:
	if fib[-1] >= n:
		break
	else:
		fib.append(fib[-1] + fib[-2])
l = len(fib)

def solve():
	for a in range(l):
		for b in range(l):
			for c in range(l):
				if fib[a] + fib[b] + fib[c] == n:
					print(fib[a], fib[b], fib[c])
					return
	print("I'm too stupid to solve this problem")
solve()


n = int(input())
a = [0, 0, n]
print(*a)


n = int(input())
(a, c) = (0, 0)
b = 1
l = [0, 1]
while c < n:
	c = a + b
	if c <= n:
		l.append(c)
	a = b
	b = c
if n in l:
	print(0, 0, n)
else:
	print(" I'm too stupid to solve this problem ")