#include <bits/stdc++.h>
namespace {
using namespace std;
using ll = long long;
using ii = std::pair<int, int>;
using vi = std::vector<int>;
using vii = std::vector<ii>;
using vll = std::vector<ll>;
const int INF = 1e9;
const int MOD = 1e9 + 7;
template <typename T>
inline T gcd(T a, T b) {
  return b ? gcd(b, a % b) : a;
}
template <typename T, typename U>
inline std::pair<T, U> mpair(T a, U b) {
  return std::make_pair(a, b);
}
const int MAX_COUNT = 1e6;
int n, k;
int a[MAX_COUNT];
}  // namespace
int main(int argc, const char* argv[]) {
  std::ios_base::sync_with_stdio(false);
  memset(a, 0, sizeof a);
  cin >> n >> k;
  bool found = false;
  for (int x = 1; x < 10; ++x) {
    for (int w = 0; w < (10); ++w) {
      a[0] = x;
      a[n - 1] = w;
      int cur = w;
      int rem = 0;
      for (int t = n - 1; t >= 2; --t) {
        int nxt = (cur * k + rem) % 10;
        rem = (cur * k + rem) / 10;
        a[t - 1] = nxt;
        cur = nxt;
      }
      int tmpX = (cur * k + rem) % 10;
      rem = (cur * k + rem) / 10;
      int tmpW = (a[0] * k + rem) % 10;
      rem = (a[0] * k + rem) / 10;
      if (rem == 0 && tmpX == x && tmpW == w) {
        found = true;
        break;
      }
    }
    if (found) break;
  }
  if (found) {
    for (int i = 0; i < (n); ++i) {
      cout << a[i];
    }
    cout << endl;
  } else {
    cout << "Impossible" << endl;
  }
  return 0;
}
