#include <bits/stdc++.h>
using namespace std;
template <class TT>
TT abs(TT a) {
  if (a < 0) return -a;
  return a;
}
template <class ZZ>
ZZ max(ZZ a, ZZ b, ZZ c) {
  return max(a, max(b, c));
}
template <class ZZ>
ZZ min(ZZ a, ZZ b, ZZ c) {
  return min(a, min(b, c));
}
typedef struct {
  int x, y, z, v;
  void print() { printf("%d %d\n", x, y); }
} P;
P sol[7], cur[7];
int ans, n;
void go(int d) {
  if (ans == d || cur[d - 1].v > n) return;
  int i;
  if (cur[d - 1].v == n) {
    if (ans > d) {
      ans = d;
      for (i = 0; i < d; i++) sol[i] = cur[i];
    }
    return;
  }
  int j, k;
  for (i = 0; i < d; i++) {
    for (k = 1; k < 9; k *= 2)
      if (k * cur[i].v > cur[d - 1].v) {
        cur[d] = (P){-1, k, i, k * cur[i].v};
        go(d + 1);
      }
    for (j = 0; j < d; j++) {
      for (k = 1; k < 9; k *= 2)
        if (cur[j].v + k * cur[i].v > cur[d - 1].v) {
          cur[d] = (P){j, k, i, cur[j].v + k * cur[i].v};
          go(d + 1);
        }
    }
  }
}
int main() {
  int i;
  while (scanf("%d", &n) == 1) {
    ans = 7;
    cur[0] = (P){0, 0, 0, 1};
    go(1);
    printf("%d\n", ans - 1);
    for (i = 1; i < ans; i++) {
      printf("lea e%cx, [", i + 'a');
      if (sol[i].x > -1) printf("e%cx + ", sol[i].x + 'a');
      if (sol[i].y > 1) printf("%d*", sol[i].y);
      printf("e%cx", sol[i].z + 'a');
      printf("]\n");
    }
  }
  return 0;
}
