Problem: Olesya loves numbers consisting of n digits, and Rodion only likes numbers that are divisible by t. Find some number that satisfies both of them.

Your task is: given the n and t print an integer strictly larger than zero consisting of n digits that is divisible by t. If such number doesn't exist, print  - 1.

Input

The single line contains two numbers, n and t (1 ≤ n ≤ 100, 2 ≤ t ≤ 10) — the length of the number and the number it should be divisible by.

Output

Print one such positive number without leading zeroes, — the answer to the problem, or  - 1, if such number doesn't exist. If there are multiple possible answers, you are allowed to print any of them.

Examples

Input

3 2


Output

712

Solution (in CPP):

Solution:
#include <bits/stdc++.h>
using namespace std;
const int bmaxn = 1000;
struct bign {
  int len;
  int s[bmaxn];
  bign() {
    memset(s, 0, sizeof(s));
    len = 1;
  }
  bign operator=(const char* num) {
    len = strlen(num);
    for (int i = 0; i < len; i++) s[i] = num[len - i - 1] - '0';
    return *this;
  }
  bign operator=(int num) {
    char s[bmaxn];
    sprintf(s, "%d", num);
    *this = s;
    return *this;
  }
  bign operator=(string num) {
    char s[bmaxn];
    strcpy(s, num.c_str());
    *this = s;
    return s;
  }
  bign(int num) { *this = num; }
  bign(const char* num) { *this = num; }
  bign(string num) { *this = num; }
  string str() const {
    string res = "";
    for (int i = 0; i < len; i++) res = (char)(s[i] + '0') + res;
    if (res == "") res = "0";
    return res;
  }
  friend istream& operator>>(istream& in, bign& x) {
    string s;
    in >> s;
    x = s.c_str();
    return in;
  }
  friend ostream& operator<<(ostream& out, bign& x) {
    out << x.str();
    return out;
  }
  long long operator%(const long long& b) const {
    long long ans = 0;
    for (int i = len - 1; i >= 0; i--) {
      ans = (ans * 10 + s[i]) % b;
    }
    return ans;
  }
  bign operator+(const bign& b) const {
    bign c;
    c.len = 0;
    for (int i = 0, g = 0; g || i < max(len, b.len); i++) {
      int x = g;
      if (i < len) x += s[i];
      if (i < b.len) x += b.s[i];
      c.s[c.len++] = x % 10;
      g = x / 10;
    }
    return c;
  }
  bign operator+=(const bign& b) {
    *this = *this + b;
    return *this;
  }
  bool operator<(const bign& b) const {
    if (len != b.len) return len < b.len;
    for (int i = len - 1; i >= 0; i--)
      if (s[i] != b.s[i]) return s[i] < b.s[i];
    return false;
  }
  bool operator>(const bign& b) const { return b < *this; }
  bool operator<=(const bign& b) const { return !(b < *this); }
  bool operator>=(const bign& b) const { return !(*this < b); }
  bool operator!=(const bign& b) const { return b < *this || *this < b; }
  bool operator==(const bign& b) const { return !(b < *this) && !(*this < b); }
};
int main() {
  int n;
  long long t;
  scanf("%d%I64d", &n, &t);
  string str1 = "1";
  string str2 = "9";
  for (int i = 1; i < n; i++) {
    str1 += "0";
    str2 += "9";
  }
  bign bn1(str1);
  bign bn2(str2);
  bign bn0(1);
  int cot = 0;
  for (; bn1 <= bn2; bn1 += bn0) {
    if (bn1 % t == 0) {
      cout << bn1;
      return 0;
    } else {
      cot++;
      if (cot > 11) {
        puts("-1");
        return 0;
      }
    }
  }
  puts("-1");
  return 0;
}