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

Solution:
import java.io.*;
import java.util.*;


public class Main {

    private static final double EPS = 1e-9;

    public static void main(String[] args) throws Exception{
        FastScanner fastScanner = new FastScanner(System.in);
        PrintWriter printWriter = new PrintWriter(System.out);
        Main main = new Main();
        main.solveB(fastScanner,printWriter);
        printWriter.close();

    }


    public void solveA(FastScanner scanner, PrintWriter writer){
        int a = scanner.nextInt();
        int b = scanner.nextInt();
        int c = scanner.nextInt();

        for(int i=0;;i++){
            int k = i*a;
            if(k>c) break;
            int r = c-k;
            if(r%b==0){
                writer.printf("Yes\n");
                return;
            }
        }
        writer.printf("No\n");

    }

    int findNumberOfTrailingZero(long num){
        int cnt = 0;
        long val = 5;
        while(val<=num){
            cnt+=num/val;
            val = val*5;
        }
        return cnt;
    }

    public void solveB(FastScanner scanner, PrintWriter writer){
        int m = scanner.nextInt();
        int l=1,r=Integer.MAX_VALUE;
//        writer.printf("%d\n",findNumberOfTrailingZero(Integer.MAX_VALUE));
        while(l<r){
            int mid = l+(r-l)/2;
            int cnt = findNumberOfTrailingZero(mid);
            if(cnt<m) l = mid+1;
            else r=mid;
        }
        int cnt = findNumberOfTrailingZero(l);
        if(cnt==m){
            writer.printf("%d\n%d %d %d %d %d\n",5,l,l+1,l+2,l+3,l+4);
        }else{
            writer.printf("0\n");
        }


    }

    static class Point{
        long x,y;
        public Point(long x, long y){
            this.x = x;
            this.y = y;
        }
    }

    long twoTimesAreaOfTriangle(Point a, Point b, Point c) {
        long ar = a.x*(b.y-c.y)+b.x*(c.y-a.y)+c.x*(a.y-b.y);
        if(ar<0) ar=ar*(-1);
        return ar;
    }

    boolean isCisOnAB(Point a, Point b, Point c){
        long cross =  (c.y - a.y) * (b.x - a.x) - (c.x - a.x) * (b.y - a.y);
        if(cross!=0) return false;
        long dotproduct = (c.x - a.x) * (b.x - a.x) + (c.y - a.y)*(b.y - a.y);
        if(dotproduct < 0)
            return false;
        long squaredlengthba = (b.x - a.x)*(b.x - a.x) + (b.y - a.y)*(b.y - a.y);
        if (dotproduct > squaredlengthba) return false;

        return true;

    }


    static class FastScanner {
        private BufferedReader reader = null;
        private StringTokenizer tokenizer = null;

        public FastScanner(InputStream in) {
            reader = new BufferedReader(new InputStreamReader(in));
            tokenizer = null;
        }

        public String next() {
            if (tokenizer == null || !tokenizer.hasMoreTokens()) {
                try {
                    tokenizer = new StringTokenizer(reader.readLine());
                    return next();
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
            return tokenizer.nextToken();
        }

        public String nextLine() {
            if (tokenizer == null || !tokenizer.hasMoreTokens()) {
                try {
                    return reader.readLine();
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }

            return tokenizer.nextToken("\n");
        }

        public long nextLong() {
            return Long.parseLong(next());
        }

        public int nextInt() {
            return Integer.parseInt(next());
        }

        public double nextDoube()  {
            return Double.parseDouble(next());
        }

    }


}