For a given positive integer n denote its k-rounding as the minimum positive integer x, such that x ends with k or more zeros in base 10 and is divisible by n.

For example, 4-rounding of 375 is 375·80 = 30000. 30000 is the minimum integer such that it ends with 4 or more zeros and is divisible by 375.

Write a program that will perform the k-rounding of n.

Input

The only line contains two integers n and k (1 ≤ n ≤ 109, 0 ≤ k ≤ 8).

Output

Print the k-rounding of n.

Examples

Input

375 4


Output

30000


Input

10000 1


Output

10000


Input

38101 0


Output

38101


Input

123456789 8


Output

12345678900000000
#include <bits/stdc++.h>
using namespace std;
int isP(long int hj) {
  long int op;
  for (op = 2; op <= sqrt(hj); op++) {
    if (hj % op == 0) return 0;
  }
  return 1;
}
void swap(long long int *p, long long int *q) {
  long long int tmp = *p;
  *p = *q;
  *q = tmp;
}
int mind(long long int p) {
  int mindd = 10;
  while (p > 0) {
    if (p % 10 < mindd) mindd = p % 10;
    p /= 10;
  }
  return mindd;
}
int maxd(long long int p) {
  int maxdd = -1;
  while (p > 0) {
    if (p % 10 > maxdd) maxdd = p % 10;
    p /= 10;
  }
  return maxdd;
}
string fdi(int hi) {
  switch (hi) {
    case 0:
      return "zero";
    case 1:
      return "one";
    case 2:
      return "two";
    case 3:
      return "three";
    case 4:
      return "four";
    case 5:
      return "five";
    case 6:
      return "six";
    case 7:
      return "seven";
    case 8:
      return "eight";
    case 9:
      return "nine";
  }
  return "";
}
long long int bd(long long int mk, long long int nk) {
  long long int i;
  for (i = min(mk, nk); i >= 1; i--) {
    if (mk % i == 0 && nk % i == 0) return i;
  }
  return 0;
}
int dsm(long long int pkk) {
  if (pkk < 0) pkk *= -1;
  while (pkk > 0) {
    if (pkk % 10 == 8) return 1;
    pkk /= 10;
  }
  return 0;
}
void seving(int ar[], long long int n) {
  long long int i, j;
  for (i = 3; i < n; i += 2) ar[i] = 1;
  ar[2] = 1;
  for (i = 2; i < n; i++) {
    if (ar[i] == 1) {
      for (j = i * i; j < n; j += i) ar[j] = 0;
    }
  }
}
int tellme(int a, int b, int c) {
  if (c < a + b)
    return 1;
  else if (a + b == c)
    return 2;
  else
    return 0;
}
int vow(string ch) {
  int i;
  for (i = 0; i < ch.size(); i++) {
    if (ch[i] >= 48 && ch[i] <= 57) return 1;
  }
  return 0;
}
int rk(char ch1, char ch2) {
  char str[9] = {'6', '7', '8', '9', 'T', 'J', 'Q', 'K', 'A'};
  int i, j;
  for (i = 0; i < 9; i++) {
    if (str[i] == ch1) break;
  }
  for (j = 0; j < 9; j++) {
    if (str[j] == ch2) break;
  }
  if (i > j)
    return 1;
  else
    return 0;
}
long long int gcd(long long int a, long long int b) {
  if (a == 0)
    return b;
  else
    return gcd(b % a, a);
}
int isT(long long int b) {
  long long int i, ct;
  ct = 0;
  for (i = 2; i <= (b - 1); i++) {
    if (b % i == 0) ct++;
    if (ct > 1) return 0;
  }
  if (ct == 1)
    return 1;
  else
    return 0;
}
int restalp(string st) {
  long int i, lt;
  lt = st.size();
  for (i = 1; i < lt; i++) {
    if (st[i] >= 65 && st[i] <= 90) return 1;
  }
  return 0;
}
long long int rerun(long long int i, long long int a, long long int k) {
  if (i == k)
    return a;
  else
    return rerun(i + 1, a + mind(a) * maxd(a), k);
}
int bitt(long long int a) {
  long int ct;
  ct = 0;
  while (a > 0) {
    if (a & 1) ct++;
    a = a >> 1;
  }
  return ct;
}
int kim(long long int a, long long int b) {
  while (a > 0) {
    if (a == 1)
      break;
    else if (a % 2 == 0)
      a /= 2;
    else if (a % 3 == 0)
      a /= 3;
    else
      return 0;
  }
  while (b > 0) {
    if (b == 1)
      return 1;
    else if (b % 2 == 0)
      b /= 2;
    else if (b % 3 == 0)
      b /= 3;
    else
      return 0;
  }
  return 0;
}
int smdg(int as, int bs) {
  int sm2 = 0;
  while (as > 0) {
    sm2 += as % bs;
    as /= bs;
  }
  return sm2;
}
long long remze(long long p) {
  string s1, s2;
  long long i;
  s2 = "";
  s1 = to_string(p);
  for (i = 0; s1[i] != '\0'; i++) {
    if (s1[i] != '0') s2 += s1[i];
  }
  p = stoi(s2);
  return p;
}
void gman(string st) {
  string ws = "abcdefgh";
  int i;
  for (i = 0; ws[i] != '\0'; i++) {
    if (ws[i] == st[0]) {
      st[0] = i + 1 + 48;
      break;
    }
  }
}
int isSubt(string s1, string s2) {
  long long i;
  for (i = 0; i < (long long)s2.size(); i++) {
    if (i + s1.size() > s2.size()) break;
    if (s2.substr(i, s1.size()) == s1) return 1;
  }
  return 0;
}
bool compare(string &s1, string &s2) { return s1.size() < s2.size(); }
int main() {
  long long int a, b, c, d, q, ct1, I, ct2, b1, b2, d2, a1, a2, i, l, lt, n, k,
      j, siz, col, h, f, maxSm, mnSm, maxI, m, mov, ev, t, curr, sm, eng, ct, x,
      prevI, num, den, s, y, maxo, prevx, preva, vb, sx, sy, ex, ey, p, g;
  ios_base::sync_with_stdio(0);
  cin.tie(NULL);
  cin >> n >> k;
  string st;
  f = 0;
  while (1) {
    st = to_string(n);
    ct = 0;
    for (j = st.size() - 1; j >= 0; j--) {
      if (st[j] == '0')
        ct++;
      else
        break;
    }
    if (ct >= k) break;
    if ((st[j] - '0') % 2 == 0)
      n *= 5;
    else if (st[j] == '5')
      n *= 2;
    else {
      f = 1;
      break;
    }
  }
  p = k - ct;
  cout << n;
  if (f == 1) {
    for (i = 1; i <= p; i++) cout << "0";
  }
  return 0;
}
