#include <bits/stdc++.h>
using namespace std;
template <class T>
void debug(T a, T b) {
  ;
}
template <class T>
void chmin(T& a, const T& b) {
  if (a > b) a = b;
}
template <class T>
void chmax(T& a, const T& b) {
  if (a < b) a = b;
}
namespace std {
template <class S, class T>
ostream& operator<<(ostream& out, const pair<S, T>& a) {
  out << '(' << a.first << ',' << a.second << ')';
  return out;
}
}  // namespace std
long long int readL() {
  long long int res;
  scanf("%I64d", &res);
  return res;
}
void printL(long long int res) { printf("%I64d", res); }
int k, m;
string s;
int MX = 10000;
bool done[10][10];
set<int> memo[10][10];
vector<int> pool_[20010], *pool = &pool_[10005];
void rec(int l, int r) {
  if (done[l][r]) return;
  done[l][r] = 1;
  int num = 0;
  for (int i = (l); i < (r); ++i) num = num * 10 + s[i] - '0';
  set<int>& res = memo[l][r];
  res.clear();
  res.insert(num);
  res.insert(-num);
  for (int i = (l + 1); i < (r); ++i) {
    rec(l, i);
    rec(i, r);
    set<int>&A = memo[l][i], &B = memo[i][r];
    auto it = A.begin();
    while (it != A.end()) {
      auto it2 = B.begin();
      while (it2 != B.end()) {
        res.insert(*it + *it2);
        res.insert(*it - *it2);
        res.insert(-*it - *it2);
        res.insert(-*it + *it2);
        res.insert((*it) * (*it2));
        res.insert(-(*it) * (*it2));
        ++it2;
      }
      ++it;
    }
  }
}
string itos(int a, int dig) {
  string res;
  for (int hoge = 0; hoge < (dig); ++hoge) {
    res += a % 10 + '0';
    a /= 10;
  }
  reverse((res).begin(), (res).end());
  return res;
}
int main() {
  for (int i = 0; i < (MX); ++i) {
    memset((done), 0, sizeof(done));
    s = itos(i, 4);
    rec(0, s.size());
    set<int>& exp = memo[0][s.size()];
    auto it = exp.begin();
    while (it != exp.end()) {
      pool[*it].push_back(i);
      ++it;
    }
  }
  int k, m;
  cin >> k >> m;
  for (int i = (0); i < (10000); ++i) {
    int rest = k - i;
    if (pool[i].size() > 0 && pool[rest].size() > 0) {
      for (auto num : pool[rest]) {
        int num2 = i;
        {
          --m;
          string s = itos(num2, 4), lat = itos(num, 4);
          cout << s + lat << '\n';
          if (m == 0) return 0;
        }
      }
    }
  }
  return 0;
}
