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 PYTHON3):

Solution:
class pt:
    def __init__(self, x, y):
        self.x = x
        self.y = y

def add(B, A):
    return pt(B.x + A.x, B.y + A.y)
def sub(B, A):
    return pt(B.x - A.x, B.y - A.y)

def scal(B, A):
    return B.x * A.x + B.y * A.y==0

def eq (A, B):
    return A.x == B.x and A.y == B.y

#x1,y1,x2,y2,x3,y3 = [int(x) for x in input().split()]


def tr(a,b,c):
    if (eq(a,c) or eq(a,b) or eq(c,b)):
        return 0
    # if scal(sub(a,b),sub(a,c)):
    if scal(sub(a,b),sub(a,c)):
        return 1
    if scal(sub(b,a),sub(b,c)):
        return 1 
    if scal(sub(c,b),sub(c,a)):
        return 1
    return 0

def check_almost(a, b, c):
    if tr(a.add(pt(0, 1)), b, c): return 1
    if tr(a.add(pt(0, -1)), b, c): return 1
    if tr(a.add(pt(1, 0)), b, c): return 1
    if tr(a.add(pt(-1, 0)), b, c): return 1
    return 0
n=int(input())
if (n % 2==0):
    print (n // 2)
    for i in range(n // 2):
        print ('2', end=' ')
else:
    print (n // 2)
    for i in range(n // 2-1):
        print ('2', end=' ')
    print ('3')