You have number a, whose decimal representation quite luckily contains digits 1, 6, 8, 9. Rearrange the digits in its decimal representation so that the resulting number will be divisible by 7.

Number a doesn't contain any leading zeroes and contains digits 1, 6, 8, 9 (it also can contain another digits). The resulting number also mustn't contain any leading zeroes.

Input

The first line contains positive integer a in the decimal record. It is guaranteed that the record of number a contains digits: 1, 6, 8, 9. Number a doesn't contain any leading zeroes. The decimal representation of number a contains at least 4 and at most 106 characters.

Output

Print a number in the decimal notation without leading zeroes — the result of the permutation.

If it is impossible to rearrange the digits of the number a in the required manner, print 0.

Examples

Input

1689


Output

1869


Input

18906


Output

18690

Difficulty: MEDIUM_HARD
Tags: Number theory

Mathematics

Starter code:

Solutions:
a = input()
cnt = [0] * 10
for i in (1, 6, 8, 9):
	cnt[i] = -1
for i in a:
	cnt[int(i)] += 1
mod = [1869, 1968, 9816, 6198, 1698, 1986, 1896, 1869]
modCnt = 0
for i in range(1, 10):
	for j in range(cnt[i]):
		modCnt = (modCnt * 3 + i) % 7
	print(str(i) * cnt[i], end='')
modCnt = 10000 * modCnt % 7
print(str(mod[7 - modCnt]) + '0' * cnt[0])


import sys
input = sys.stdin.readline

def ceil(x):
	if x != int(x):
		x = int(x) + 1
	return x

def factorial(x, m):
	val = 1
	while x > 0:
		val = val * x % m
		x -= 1
	return val

def fact(x):
	val = 1
	while x > 0:
		val *= x
		x -= 1
	return val

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 lcm(a, b):
	return a * b // gcd(a, b)

def nCr(n, k):
	if k > n:
		return 0
	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=None):
	if hi == None:
		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)]
	(prime[0], prime[1]) = (False, False)
	p = 2
	while p * p <= n:
		if prime[p] == True:
			for i in range(p * p + p, n + 1, p):
				prime[i] = False
		p += 1
	return prime
MAXN = int(100000.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
spf = [0 for i in range(MAXN)]

def factoriazation(x):
	res = []
	for i in range(2, int(x ** 0.5) + 1):
		while x % i == 0:
			res.append(i)
			x //= i
	if x != 1:
		res.append(x)
	return res

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

def float_array():
	return list(map(float, input().strip().split()))

def str_array():
	return input().strip().split()
MOD = int(1000000000.0) + 7
CMOD = 998244353
INF = float('inf')
NINF = -float('inf')
from itertools import permutations
import math
from bisect import bisect_left

def solve():
	n = input().rstrip()
	b = [0] * 10
	for x in n:
		b[int(x)] += 1
	for x in '1689':
		b[int(x)] -= 1
	y = ['1869', '1968', '9816', '6198', '1698', '1986', '1896', '1869']
	total = 0
	for i in range(1, 10):
		for j in range(b[i]):
			total = (total * 10 + i) % 7
		print(str(i) * b[i], end='')
	total = total * 10000 % 7
	print(y[7 - total] + '0' * b[0])
for _ in range(1):
	solve()


a = input()
b = [0] * 10
total = 0
for i in a:
	b[int(i)] += 1
for i in [1, 6, 8, 9]:
	b[i] -= 1
for i in range(1, 10):
	for j in range(b[i]):
		total = (total * 10 + i) % 7
	print(str(i) * b[i], end='')
total = 10000 * total % 7
z = ['1869', '6189', '9186', '6198', '8691', '9168', '1896', '1869']
print(z[7 - total] + '0' * b[0])


n = [int(i) for i in input()]
for x in [1, 6, 8, 9]:
	for i in range(len(n)):
		if n[i] == x:
			del n[i]
			break
prefix = [1869, 6189, 1689, 6198, 1698, 9861, 1896]
res = sum([n[i] * pow(10, len(n) - i - 1, 7) for i in range(len(n))])
print(prefix[-res * pow(10, 5 * len(n), 7) % 7], end='')
print(*n, sep='')


import os
from io import BytesIO, IOBase
import sys
from itertools import permutations
from collections import Counter

def main():
	a = input().rstrip()
	n = len(a)
	a = Counter(a)
	for i in '6189':
		a[i] -= 1
	(z, s, y) = (0, [], [1])
	for i in range(n):
		y.append(y[-1] * 10 % 7)
	xx = 1
	for i in a:
		if i != '0':
			x = int(i)
			for j in range(a[i]):
				s.append(i)
				z = (z + x * y[n - xx]) % 7
				xx += 1
	f = 1
	for i in permutations([1, 6, 8, 9]):
		if (z + i[0] * y[n - xx] + i[1] * y[n - xx - 1] + i[2] * y[n - xx - 2] + i[3] * y[n - xx - 3]) % 7 == 0:
			f = 0
			s.extend([str(i[0]), str(i[1]), str(i[2]), str(i[3])])
			break
	if f:
		print(0)
	else:
		s.append('0' * a['0'])
		print(''.join(s))
BUFSIZE = 8192

class FastIO(IOBase):
	newlines = 0

	def __init__(self, file):
		self._fd = file.fileno()
		self.buffer = BytesIO()
		self.writable = 'x' in file.mode or 'r' not in file.mode
		self.write = self.buffer.write if self.writable else None

	def read(self):
		while True:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			if not b:
				break
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines = 0
		return self.buffer.read()

	def readline(self):
		while self.newlines == 0:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			self.newlines = b.count(b'\n') + (not b)
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines -= 1
		return self.buffer.readline()

	def flush(self):
		if self.writable:
			os.write(self._fd, self.buffer.getvalue())
			(self.buffer.truncate(0), self.buffer.seek(0))

class IOWrapper(IOBase):

	def __init__(self, file):
		self.buffer = FastIO(file)
		self.flush = self.buffer.flush
		self.writable = self.buffer.writable
		self.write = lambda s: self.buffer.write(s.encode('ascii'))
		self.read = lambda : self.buffer.read().decode('ascii')
		self.readline = lambda : self.buffer.readline().decode('ascii')
(sys.stdin, sys.stdout) = (IOWrapper(sys.stdin), IOWrapper(sys.stdout))
input = lambda : sys.stdin.readline().rstrip('\r\n')
main()