#include <bits/stdc++.h>
using namespace std;
void mego() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
}
long long gcd(long long a, long long b) {
  if (a == 0) return b;
  return (a, a % b);
}
bool ACplease(string s, string ers) {
  while (s.size() > 0) {
    long long i = s.find(ers);
    if (i == -1) break;
    s.erase(i, ers.size());
  }
  return (s.size() == 0);
}
char opp(char x) {
  if (x >= 'a' && x <= 'z')
    x += ('A' - 'a');
  else
    x += ('a' - 'A');
  return x;
}
long long countonesinbinary(long long n) {
  long long c = 0;
  while (n) {
    n = (n & n - 1);
    c++;
  }
  return c;
}
unsigned long long inf = 1e19;
const long long mod = 1e9 + 7;
long long power(long long base, long long expo) {
  long long answmod = 1;
  base %= mod;
  while (expo > 0) {
    if (expo & 1) answmod = (answmod * base) % mod;
    expo >>= 1;
    base = (base * base) % mod;
  }
  return answmod;
}
long long maxPrime(long long n) {
  long long maxP = 0;
  while (n % 2 == 0) {
    maxP = 2;
    n /= 2;
  }
  for (long long i = 3; i <= sqrt(n); i += 2) {
    while (n % i == 0) {
      maxP = i;
      n = n / i;
    }
  }
  if (n > 2) maxP = n;
  return maxP;
}
void file() { freopen("largest.in", "r", stdin); }
int main() {
  mego();
  long long n = 0, x = 0, y = 0, z = 0, a = 0, b = 0, c = 0, m = 0, d;
  long long chest = 0, biceps = 0, back = 0;
  vector<long long> v1, v2, v3, v;
  string s;
  map<long long, long long> mama;
  cin >> n >> m;
  if (m == 0 && n > 1) return cout << "No solution", 0;
  cout << m;
  for (long long i = 1; i < n; i++) {
    cout << 0;
  }
  return 0;
}
