Problem: Bachgold problem is very easy to formulate. Given a positive integer n represent it as a sum of maximum possible number of prime numbers. One can prove that such representation exists for any integer greater than 1.

Recall that integer k is called prime if it is greater than 1 and has exactly two positive integer divisors — 1 and k. 

Input

The only line of the input contains a single integer n (2 ≤ n ≤ 100 000).

Output

The first line of the output contains a single integer k — maximum possible number of primes in representation.

The second line should contain k primes with their sum equal to n. You can print them in any order. If there are several optimal solution, print any of them.

Examples

Input

5


Output

2
2 3


Input

6


Output

3
2 2 2

Solution (in PYTHON):

Solution:
import time
"""
mod = (10**4)
st = time.time()
arr = [x[:] for x in [[-1] * mod] * mod]
en = time.time()
print en - st


st = time.time()
arr = [[-1 for i in range(mod)] for j in range(mod)]
en = time.time()
print en - st
"""

#!/bin/python

import sys
"""
t = int(raw_input())

for _ in range(t):
	n,x = map(int, raw_input().split())
	arr = map(int, raw_input().strip().split())

	arr.sort()
	total = 0
	i = 0
	for i in range(n):
		total += arr[i]
		if (total >= x):
			break
		i += 1
	print i
"""
"""
s = raw_input()
t = raw_input()

i = 0

for c1, c2 in zip(s, t):
    if (c1 == c2):
        i += 1
    else:
        break
slen = len(s)
tlen = len(t)

n = int(raw_input())
if (n == ((slen - i) + (tlen - i))):
    print "Yes"
elif (slen == tlen or (tlen == i) or (slen == i)):
    print "Yes"
else:
    print "No"
"""
"""
import re

s = raw_input()
l = re.findall(r'((.)\2*)', s)
m = [x[0] for x in l]

for i in m:
    if (len(i)%2):
        print i[0],

"""

n = int(raw_input())

if ((n == 2) or (n == 3)):
    print 1
    print n
    sys.exit(0)

if (n%2 == 0):
    print (n/2)
    for i in range(n/2):
        print 2,
else:
    print (1 + (n-3)/2)
    for i in range((n-3)/2):
        print 2,
    print 3