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:
# import sys
# sys.stdout = open('CP/output.txt', 'w')
# sys.stdin = open('CP/input.txt', 'r')

# import os
# import math
# import numpy as np
# from collections import OrderedDict
# from memo import memo #@memo
# from functools import lru_cache #@lru_cache
# from collections import deque #list = deque()
# import random
# from queue import *

#def gcd(a, b):
#	while b:
#	a, b = b, a % b
#return a
#def lcm(a, b):
#	w = a //gcd(a,b)
#return w * b
#def binary_search(array) -> int:
#    def condition(value) -> bool:
#        pass
#    left, right = min(search_space), max(
#        search_space)  # could be [0, n], [1, n] etc. Depends on problem
#    while left < right:
#        mid = left + (right - left) // 2
#        if condition(mid):
#            right = mid
#        else:
#            left = mid + 1
#    return left


def solver(N):
    if N & 1==0:
        print(N//2)
        l=[2 for i in range(N//2)]
        return " ".join([str(ele) for ele in l])
    else:
        print (N//2)
        l = [2 for i in range(N // 2 -1)]
        return " ".join([str(ele) for ele in l])+" 3"


if __name__=='__main__':
    N = int(input())
    #pc, pr = map(int, input().split())
    #arr = list(map(int,input().split()))
    print(solver(N))