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:
# for _ in range(int(input())):
#     n,k=map(int,input().split())
#     arr = [int(x) for x in input().split()]
# c=[0]*n
# #d=[]
# i=0
# x=0
# while(max(arr)!=-1):
#     x=k-arr[i]
#     if(arr!=-1):
#         c[arr.index(arr[i])]=1
#         arr[arr.index(arr[i])]= -1
#         if(x in arr):
#             while(x in arr):
#                 arr[arr.index(x)]= -1
#                 if(x in arr):
#                     c[arr.index(x)]=1
#                     arr[arr.index(x)]= -1
#     i+=1
# print(" ".join(str(gh) for gh in c))
# ans = 0
# c=1
# for i in range(n):
#     if(2*arr[i] == k):
#         c=c+1
#         ans=(c)%2
#     else:
#         if(2*a[i]<k):
#             ans = 0
#         else:
#             ans=1
#     print(str(ans),end=" ")
# print("\n")
########################
#                        #
#     COLOUR REVOLUTIONN    #
#                        #
#####################

# for _ in range(int(input())):
#     n,k=map(int,input().split())
#     if(k != 1):
#         a = abs((1-(k**4))//(1-k))
#         n1 = n//a
#     else:
#         n1 = 1
#     for i in range(4):
#         print(str(n1*(k**i)),end=' ')
#     print('\n')

########################################

#            CABEL CAR                 #

########################################

# r,g,b = map(int,input().split())
# co = -1
# while(r >0 or g>0 or b>0):
#     co += 1
#     r -= 2
#     if(r <=0 and g<=0 and b<=0):
#         break
#     co += 1
#     g -= 2
#     if(r <=0 and g<=0 and b<=0):
#         break
#     co+=1
#     b-=2
# print(co+30)

########################################

#            ROAD TO ZERO              #

########################################

# for _ in range(int(input())):
#     x,y = map(int, input().split())
#     a,b = map(int, input().split())
#     a1 = min(x,y)
#     b1=max(x,y)
#     op1=0
#     op2=0
#     if(a*2 <= b):
#         print((x+y)*a)
#     else:
#         op1=a1*b
#         op2=(b1-a1)*a
#         print(op1+op2)

########################################

#          FANCY FENCE                 #

########################################

# from math import ceil,floor
# for _ in range(int(input())):
#     a = float(input())
#     if(a==180):
#         print("YES")
#     else:
#         n = 360/(180-a)
#         if(ceil(n) == floor(n)):
#             print("YES")
#         else:
#             print("NO")

########################################

#       NEW YEAR TRANSORTATION         #

########################################

# m,n = map(int,input().split())
# a = [int(x) for x in input().split()]
# c=0
# for i in range(1,m-1):
#     c+=a[i-1]
#     if(c==n):
#         print("YES")
#         break
#     if(c>n):
#         print("NO")
#         break
# if(c<n):
#     print("NO")
###################
# flag = 0
# while(c<n):

#     if(c==n-1):
#         print("YES")
#         flag=1
#         break
#     c+=a[c]
# if(flag == 0):
#     print("NO")

########################################

#      CANDIES AND TWO SISTERS         #

########################################

# for _ in range(int(input())):
#     a = int(input())
#     if(a%2==0):
#         print((a//2)-1)
#     else:
#         print(a//2)

########################################

#          LEARN FROM MATHS            #

########################################

# a = int(input())
# if(a % 2 == 0):
#     print(str(8)+" "+str(a-8))
# else:
#     print(str(9)+" "+str(a-9))

# for _ in range(int(input())):
#     a, b = map(int, input().split())
#     d = abs(a-b)
#     if(d % 10 == 0):
#         c = (d//10)
#     else:
#         c = (d//10) + 1
#     print(c)


# a, b, c = map(int, input().split())
# print(max(a, b, c)-min(a, b, c))

########################################

#         MOST UNSTABLE ARRAY          #

########################################

# for _ in range(int(input())):
#     n, m = map(int, input().split())
#     a = n//2
#     if(n == 1):
#         print(0)
#     elif(n == 2):
#         print(m)
#     else:
#         print(m*2)

########################################

#         BACHGOLD PROBLEM             #

########################################

n = int(input())
if(n % 2 == 1):
    a = n//2
    print(str(a)+"\r")
    print("2 "*(a-1)+"3")
else:
    a = n//2
    print(str(a)+"\r")
    print("2 "*a)