Problem: Mr. Santa asks all the great programmers of the world to solve a trivial problem. He gives them an integer m and asks for the number of positive integers n, such that the factorial of n ends with exactly m zeroes. Are you among those great programmers who can solve this problem?

Input

The only line of input contains an integer m (1 ≤ m ≤ 100 000) — the required number of trailing zeroes in factorial.

Output

First print k — the number of values of n such that the factorial of n ends with m zeroes. Then print these k integers in increasing order.

Examples

Input

1


Output

5
5 6 7 8 9 

Input

5


Output

0

Note

The factorial of n is equal to the product of all integers from 1 to n inclusive, that is n! = 1·2·3·...·n.

In the first sample, 5! = 120, 6! = 720, 7! = 5040, 8! = 40320 and 9! = 362880.

Solution (in PYTHON3):

Solution:
# Author : -pratyay-
import sys
# inp=sys.stdin.buffer.readline
import io,os
inp = io.BytesIO(os.read(0,os.fstat(0).st_size)).readline
inar=lambda: list(map(int,inp().split()))
inin=lambda: int(inp())
inst=lambda: inp().decode().strip()
wrt=sys.stdout.write
pr=lambda *args,end='\n': wrt(' '.join([str(x) for x in args])+end)
enum=enumerate
inf=float('inf')
cdiv=lambda x,y: (-(-x//y))
# Am I debugging ? Check if I'm using same variable name in two places
# fun() returning empty list ? check new=temp[:] or new=temp

def print(*args,end='\n'):
    for i in args:
        sys.stdout.write(str(i)+' ')
        #sys.stdout.flush()
    sys.stdout.write(end)


from types import GeneratorType
def bootstrap(f, stack=[]):
    def wrappedfunc(*args, **kwargs):
        if stack: return f(*args, **kwargs)
        else:
            to = f(*args, **kwargs)
            while True:
                if type(to) is GeneratorType:
                    stack.append(to)
                    to = next(to)
                else:
                    stack.pop()
                    if not stack: break
                    to = stack[-1].send(to)
            return to
    return wrappedfunc

def DFS(gr,cost):
    n=len(gr)
    vis=[False for i in range(n)]
    ans=0

    @bootstrap
    def dfs(node):
        vis[node]=True 
        ret=cost[node]
        for i in gr[node]:
            if not vis[i]:
                ret=min(ret,(yield dfs(i)))
        yield ret

    for i in range(n):
        if not vis[i]:
            ans+=dfs(i)
    return ans

def cnt(x):
    res=0
    i=5
    while(i<=x):
        res+=x//i
        i*=5 
    return res 

_T_=1 #inin()
for _t_ in range(_T_):
    n=inin()
    low=1;high=int(1e18)
    ansleft=0; ansright=0
    while(low<=high):
        mid=(low+high)//2
        srch=cnt(mid)
        if srch==n:
            ansleft=mid
            high=mid-1
        elif srch>n:
            high=mid-1
        else:
            low=mid+1
    low=1;high=int(1e18)
    while(low<=high):
        mid=(low+high)//2
        srch=cnt(mid)
        if srch==n:
            ansright=mid
            low=mid+1
        elif srch>n:
            high=mid-1
        else:
            low=mid+1
    if ansleft==ansright==0:
        print(0)
        break
    print(ansright-ansleft+1)
    print(*[i for i in range(ansleft,ansright+1)])