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;
string Addition(string a, string b);
string Multiplication(string a, string b);
string Multiplication(string a, int k);
string Subtraction(string a, string b);
string Division(string a, string b);
string Division(string a, int k);
string Div_mod(string a, string b);
int Div_mod(string a, int k);
string cut_leading_zero(string a);
int compare(string a, string b);
int main() {
  int n, t;
  cin >> n >> t;
  string ans = "1";
  while (1) {
    if ((int)ans.size() > n) {
      cout << -1 << endl;
      return 0;
    }
    ans = Multiplication(ans, t);
    if ((int)ans.size() == n) {
      cout << ans << endl;
      break;
    }
  }
  return 0;
}
string Multiplication(string a, string b) {
  int i, j, multi, carry;
  string ans, temp;
  ans = "0";
  for (j = (int)b.size() - 1; j >= 0; j--) {
    temp = "";
    carry = 0;
    for (i = (int)a.size() - 1; i >= 0; i--) {
      multi = (a[i] - '0') * (b[j] - '0') + carry;
      temp += (multi % 10 + '0');
      carry = multi / 10;
    }
    if (carry) temp += (carry + '0');
    reverse(temp.begin(), temp.end());
    temp += string((int)b.size() - j - 1, '0');
    ans = Addition(ans, temp);
  }
  ans = cut_leading_zero(ans);
  return ans;
}
string Multiplication(string a, int k) {
  string ans;
  int i, sum, carry = 0;
  for (i = (int)a.size() - 1; i >= 0; i--) {
    sum = (a[i] - '0') * k + carry;
    carry = sum / 10;
    ans += (sum % 10) + '0';
  }
  while (carry) {
    ans += (carry % 10) + '0';
    carry /= 10;
  }
  reverse(ans.begin(), ans.end());
  ans = cut_leading_zero(ans);
  return ans;
}
string Addition(string a, string b) {
  int carry = 0, i;
  string ans;
  if ((int)a.size() > (int)b.size())
    b = string((int)a.size() - (int)b.size(), '0') + b;
  if ((int)b.size() > (int)a.size())
    a = string((int)b.size() - (int)a.size(), '0') + a;
  ans.resize((int)a.size());
  for (i = (int)a.size() - 1; i >= 0; i--) {
    int sum = carry + a[i] + b[i] - 96;
    ans[i] = (char)(sum % 10 + '0');
    carry = sum / 10;
  }
  if (carry) ans.insert(0, string(1, carry + '0'));
  ans = cut_leading_zero(ans);
  return ans;
}
string Subtraction(string a, string b) {
  int borrow = 0, i, sub;
  string ans;
  if ((int)b.size() < (int)a.size())
    b = string((int)a.size() - (int)b.size(), '0') + b;
  for (i = (int)a.size() - 1; i >= 0; i--) {
    sub = a[i] - b[i] - borrow;
    if (sub < 0) {
      sub += 10;
      borrow = 1;
    } else
      borrow = 0;
    ans += sub + '0';
  }
  reverse(ans.begin(), ans.end());
  ans = cut_leading_zero(ans);
  return ans;
}
string Division(string a, string b) {
  string mod, temp, ans = "0";
  int i, j;
  for (i = 0; i < (int)a.size(); i++) {
    mod += a[i];
    mod = cut_leading_zero(mod);
    for (j = 0; j < 10; j++) {
      temp = Multiplication(b, j);
      if (compare(temp, mod) == 1) break;
    }
    temp = Multiplication(b, j - 1);
    mod = Subtraction(mod, temp);
    ans += (j - 1) + '0';
  }
  mod = cut_leading_zero(mod);
  ans = cut_leading_zero(ans);
  return ans;
}
string Division(string a, int k) {
  int i, sum = 0;
  string ans = "0";
  for (i = 0; i < (int)a.size(); i++) {
    sum = (sum * 10 + (a[i] - '0'));
    ans += (sum / k) + '0';
    sum = sum % k;
  }
  ans = cut_leading_zero(ans);
  return ans;
}
string Div_mod(string a, string b) {
  string mod, temp, ans = "0";
  int i, j;
  for (i = 0; i < (int)a.size(); i++) {
    mod += a[i];
    mod = cut_leading_zero(mod);
    for (j = 1; j < 10; j++) {
      temp = Multiplication(b, j);
      if (compare(temp, mod) > 0) break;
    }
    temp = Multiplication(b, j - 1);
    mod = Subtraction(mod, temp);
    ans += (j - 1) + '0';
  }
  mod = cut_leading_zero(mod);
  ans = cut_leading_zero(ans);
  return mod;
}
int Div_mod(string a, int k) {
  int i, sum = 0;
  for (i = 0; i < (int)a.size(); i++) sum = (sum * 10 + (a[i] - '0')) % k;
  return sum;
}
int compare(string a, string b) {
  int i;
  a = cut_leading_zero(a);
  b = cut_leading_zero(b);
  if ((int)a.size() > (int)b.size()) return 1;
  if ((int)a.size() < (int)b.size()) return -1;
  for (i = 0; i < (int)a.size(); i++) {
    if (a[i] > b[i])
      return 1;
    else if (a[i] < b[i])
      return -1;
  }
  return 0;
}
string cut_leading_zero(string a) {
  string s;
  int i;
  if (a[0] != '0') return a;
  for (i = 0; i < (int)a.size() - 1; i++)
    if (a[i] != '0') break;
  for (i = i; i < (int)a.size(); i++) s += a[i];
  return s;
}