#include <bits/stdc++.h>
using namespace std;
int n, m, cnt = 0;
int a, b, c, d, ans[1000001];
map<int, int> mp;
void Insert(int x) {
  if (mp.find(x) != mp.end()) return;
  mp[x] = 233;
  ans[++cnt] = x;
  if (cnt >= m) {
    for (int i = 1; i <= m; i++) printf("%08d\n", ans[i]);
    exit(0);
  }
}
void check(int x) {
  if (n - x > 9999) return;
  if (n - x < 0) return;
  int px = n - x;
  int now;
  now = px * 10000 + a * 1000 + b * 100 + c * 10 + d;
  Insert(now);
  now = a * 1e7 + px * 1000 + b * 100 + c * 10 + d;
  Insert(now);
  now = a * 1e7 + b * 1e6 + px * 100 + c * 10 + d;
  Insert(now);
  now = a * 1e7 + b * 1e6 + c * 1e5 + px * 10 + d;
  Insert(now);
  now = a * 1e7 + b * 1e6 + c * 1e5 + d * 1e4 + px;
  Insert(now);
}
void Calc(int x) {
  if (n - x > 9999) return;
  if (n - x < 0) return;
  int px = n - x;
  int now = px * 10000 + a * 1000 + b * 100 + c * 10 + d;
  Insert(now);
}
void check2(int x, int y, int z) {
  Calc(x + y + z);
  Calc(x + y - z);
  Calc(x - y + z);
  Calc(x - y - z);
  Calc(-x + y + z);
  Calc(-x + y - z);
  Calc(-x - y + z);
  Calc(-x - y - z);
}
void Solve() {
  for (a = 0; a <= 9; a++)
    for (b = 0; b <= 9; b++)
      for (c = 0; c <= 9; c++)
        for (d = 0; d <= 9; d++) {
          check(a + b + c + d);
          check(a + b + c - d);
          check(a + b - c + d);
          check(a + b - c - d);
          check(a - b + c + d);
          check(a - b + c - d);
          check(a - b - c + d);
          check(a - b - c - d);
          check(-a + b + c + d);
          check(-a + b + c - d);
          check(-a + b - c + d);
          check(-a + b - c - d);
          check(-a - b + c + d);
          check(-a - b + c - d);
          check(-a - b - c + d);
          check(-a - b - c - d);
          check2(a * b, c, d);
          check2(b * c, a, d);
          check2(c * d, a, b);
          check2(10 * a + b, c, d);
          check2(10 * b + c, a, d);
          check2(10 * c + d, a, b);
        }
}
int main() {
  scanf("%d%d", &n, &m);
  Solve();
  return 0;
}
