#include <bits/stdc++.h>
using namespace std;
int k, m, size, cnt = 0;
int num[4], sym[3];
int vis[2 * 10005];
int t = 0;
inline int Analysis(int x) {
  int size = 0;
  do {
    size++;
    x = x / 10;
  } while (x > 0);
  return size;
}
inline void Cal() {
  int x = num[0];
  int y = 0, mid = 0;
  bool flag = 1;
  for (int i = 0; i < 3; i++) {
    if (sym[i] == 0) {
      x = x * 10 + num[i + 1];
      continue;
    }
    if (sym[i] == 1) {
      if (mid != 0) {
        if (flag)
          y += mid * x;
        else
          y -= mid * x;
        mid = 0;
      } else {
        if (flag)
          y += x;
        else
          y -= x;
      }
      flag = 1;
      x = num[i + 1];
      continue;
    }
    if (sym[i] == 2) {
      if (mid != 0) {
        if (flag)
          y += mid * x;
        else
          y -= mid * x;
        mid = 0;
      } else {
        if (flag)
          y += x;
        else
          y -= x;
      }
      flag = 0;
      x = num[i + 1];
      continue;
    }
    if (sym[i] == 3) {
      if (mid == 0)
        mid = x;
      else
        mid = mid * x;
      x = num[i + 1];
      continue;
    }
  }
  if (mid != 0) {
    if (flag)
      y += mid * x;
    else
      y -= mid * x;
    mid = 0;
  } else {
    if (flag)
      y += x;
    else
      y -= x;
  }
  if (cnt == m) return;
  if (y > 0 && 0 <= k - y && vis[y] != t) {
    for (int i = Analysis(k - y); i < 4; i++) printf("0");
    printf("%d", k - y);
    for (int i = 0; i < 4; i++) printf("%d", num[i]);
    printf("\n");
    cnt++;
    vis[y] = t;
  }
  if (cnt == m) return;
  if (y > 0 && k + y < 10000 && vis[y] != t) {
    for (int i = Analysis(k + y); i < 4; i++) printf("0");
    printf("%d", k + y);
    for (int i = 0; i < 4; i++) printf("%d", num[i]);
    printf("\n");
    cnt++;
    vis[y] = t;
  }
  return;
}
inline void DFS_SYM(int pos) {
  if (cnt == m) return;
  if (pos == 3) {
    Cal();
    return;
  }
  for (sym[pos] = 0; sym[pos] < 4; sym[pos]++) DFS_SYM(pos + 1);
  return;
}
inline void DFS_NUM(int pos) {
  if (cnt == m) return;
  if (pos == 4) {
    t++;
    DFS_SYM(0);
    return;
  }
  for (num[pos] = 0; num[pos] < 10; num[pos]++) DFS_NUM(pos + 1);
  return;
}
int main() {
  scanf("%d%d", &k, &m);
  DFS_NUM(0);
  return 0;
}
