#include <bits/stdc++.h>
using namespace std;
template <class T>
inline void remax(T& A, T B) {
  if (A < B) A = B;
}
template <class T>
inline void remin(T& A, T B) {
  if (A > B) A = B;
}
string ToString(long long num) {
  string ret;
  do {
    ret += ((num % 10) + '0');
    num /= 10;
  } while (num);
  reverse(ret.begin(), ret.end());
  return ret;
}
long long ToNumber(string s) {
  long long r = 0, p = 1;
  for (int i = s.size() - 1; i >= 0; --i) r += (s[i] - '0') * p, p *= 10;
  return r;
}
long long Gcd(long long a, long long b) {
  while (a %= b ^= a ^= b ^= a)
    ;
  return b;
}
long long Power(long long base, long long power) {
  long long ret = 1;
  while (power) {
    if (power & 1) ret *= base;
    power >>= 1;
    base *= base;
  }
  return ret;
}
long long PowerMod(long long base, long long power, long long mod) {
  if (!power) return 1;
  if (power & 1) return (base * PowerMod(base, power - 1, mod)) % mod;
  return PowerMod((base * base) % mod, power >> 1, mod);
}
int Log(long long num, long long base) {
  int ret = 0;
  while (num) {
    ++ret;
    num /= base;
  }
  return ret;
}
int Count(long long mask) {
  int ret = 0;
  while (mask) {
    if (mask & 1) ++ret;
    mask >>= 1;
  }
  return ret;
}
int n;
int f(long long x) {
  int tmp = 5;
  int ret = 0;
  while (x / tmp > 0) {
    ret += x / tmp;
    tmp *= 5;
  }
  return ret;
}
int bs(int l, int h) {
  if (l > h) return ~0;
  int m = (l + h) / 2;
  int a = f(m);
  if (a == n && f(m - 1) < n)
    return m;
  else if (a >= n)
    return bs(l, m - 1);
  return bs(m + 1, h);
}
inline void run() {
  vector<int> vec;
  int x;
  scanf("%d", &n);
  x = bs(1, 1000000000);
  if (~x) {
    while (f(x) == n) vec.emplace_back(x++);
    printf("%d\n", (int)vec.size());
    for (int i = 0; i < vec.size(); ++i) {
      if (i) putchar(' ');
      printf("%d", vec[i]);
    }
    puts("");
  } else
    puts("0");
}
int main() {
  FILE* input = stdin;
  FILE* output = stdout;
  while (!feof(input)) {
    run();
    break;
  }
  return 0;
}

### Prompt

Please formulate a cpp solution to the following 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.

### Response

```cpp
#include <bits/stdc++.h>
using namespace std;
template <class T>
inline void remax(T& A, T B) {
  if (A < B) A = B;
}
template <class T>
inline void remin(T& A, T B) {
  if (A > B) A = B;
}
string ToString(long long num) {
  string ret;
  do {
    ret += ((num % 10) + '0');
    num /= 10;
  } while (num);
  reverse(ret.begin(), ret.end());
  return ret;
}
long long ToNumber(string s) {
  long long r = 0, p = 1;
  for (int i = s.size() - 1; i >= 0; --i) r += (s[i] - '0') * p, p *= 10;
  return r;
}
long long Gcd(long long a, long long b) {
  while (a %= b ^= a ^= b ^= a)
    ;
  return b;
}
long long Power(long long base, long long power) {
  long long ret = 1;
  while (power) {
    if (power & 1) ret *= base;
    power >>= 1;
    base *= base;
  }
  return ret;
}
long long PowerMod(long long base, long long power, long long mod) {
  if (!power) return 1;
  if (power & 1) return (base * PowerMod(base, power - 1, mod)) % mod;
  return PowerMod((base * base) % mod, power >> 1, mod);
}
int Log(long long num, long long base) {
  int ret = 0;
  while (num) {
    ++ret;
    num /= base;
  }
  return ret;
}
int Count(long long mask) {
  int ret = 0;
  while (mask) {
    if (mask & 1) ++ret;
    mask >>= 1;
  }
  return ret;
}
int n;
int f(long long x) {
  int tmp = 5;
  int ret = 0;
  while (x / tmp > 0) {
    ret += x / tmp;
    tmp *= 5;
  }
  return ret;
}
int bs(int l, int h) {
  if (l > h) return ~0;
  int m = (l + h) / 2;
  int a = f(m);
  if (a == n && f(m - 1) < n)
    return m;
  else if (a >= n)
    return bs(l, m - 1);
  return bs(m + 1, h);
}
inline void run() {
  vector<int> vec;
  int x;
  scanf("%d", &n);
  x = bs(1, 1000000000);
  if (~x) {
    while (f(x) == n) vec.emplace_back(x++);
    printf("%d\n", (int)vec.size());
    for (int i = 0; i < vec.size(); ++i) {
      if (i) putchar(' ');
      printf("%d", vec[i]);
    }
    puts("");
  } else
    puts("0");
}
int main() {
  FILE* input = stdin;
  FILE* output = stdout;
  while (!feof(input)) {
    run();
    break;
  }
  return 0;
}

```