#include <bits/stdc++.h>
using namespace std;
set<int> S;
int k, m, ori;
void dfs(int num, int val) {
  if (S.size() >= m) return;
  if (!num) {
    int t = abs(k - val);
    if (t < 10000) {
      S.insert(t * 10000 + ori);
      S.insert(ori * 10000 + t);
    }
    t = abs(k + val);
    if (t < 10000) {
      S.insert(t * 10000 + ori);
      S.insert(ori * 10000 + t);
    }
    return;
  }
  int t = num % 10;
  dfs(num / 10, val + t);
  dfs(num / 10, val - t);
  dfs(num / 10, val * t);
}
int main() {
  ios::sync_with_stdio(false);
  cin >> k >> m;
  for (int i = 0; i <= 9999; i++) {
    ori = i;
    dfs(i / 10, i % 10);
  }
  for (set<int>::iterator it = S.begin(); it != S.end() && m--; it++) {
    int t = *it, tmp = 10000000;
    for (int i = 1; i <= 8; i++) {
      cout << t / tmp;
      t %= tmp;
      tmp /= 10;
    }
    cout << '\n';
  }
  return 0;
}
