#include <bits/stdc++.h>
using namespace std;
int n, m, cnt;
int cov[10000];
int now;
void dfs(int x, int y, int z) {
  if (x > 3) {
    y = abs(n - y);
    if (x != 4 || y >= 10000 || cov[y] == now) return;
    printf("%04d%04d\n", now, y);
    cov[y] = now;
    cnt++;
    if (cnt == m) exit(0);
    return;
  }
  dfs(x + 1, y + z % 10, z / 10);
  dfs(x + 1, y - z % 10, z / 10);
  dfs(x + 1, y * (z % 10), z / 10);
  dfs(x + 2, y + z % 100, z / 100);
  dfs(x + 2, y - z % 100, z / 100);
  dfs(x + 2, y * (z % 100), z / 100);
  dfs(x + 3, y + z % 1000, z / 1000);
  dfs(x + 3, y - z % 1000, z / 1000);
  dfs(x + 3, y * (z % 1000), z / 1000);
}
int main() {
  int i, j, k;
  scanf("%d%d", &n, &m);
  for (now = 1; now < 10000; now++) {
    dfs(1, now % 10, now / 10);
    dfs(2, now % 100, now / 100);
    dfs(3, now % 1000, now / 1000);
  }
  return 0;
}
