#include <bits/stdc++.h>
using namespace std;
map<long long, int> res;
int cur[256];
int was[256];
int n;
int best = 1000;
int bestv[256];
int gf = 0;
long long calchash(int m) {
  long long res = 0;
  for (int i = 0; i < m; i++) {
    res = (res * 257) + cur[i];
  }
  return res;
}
void dfs(int maxd, int depth, int pos) {
  if (depth > maxd) return;
  if (gf) return;
  if (was[n]) {
    if (depth < best) {
      best = depth;
      for (int i = 0; i < 256; i++) {
        bestv[i] = cur[i];
      }
      gf = 1;
      return;
    }
  }
  for (int i = 0; i < pos; i++) {
    for (int j = 0; j < pos; j++) {
      for (int k = 3; k >= 0; k--) {
        for (int l = 1; l >= 0; l--) {
          int now = cur[i] * l + cur[j] * (1 << k);
          if (now >= 256 || was[now]) continue;
          was[now] = 1;
          cur[pos] = now;
          dfs(maxd, depth + 1, pos + 1);
          was[now] = 0;
        }
      }
    }
  }
}
int main() {
  scanf("%d", &n);
  int strt = 1;
  if (n == 254) {
    strt = 5;
  }
  cur[0] = 1;
  was[1] = 1;
  for (int i = strt; i <= 5; i++) {
    dfs(i, 0, 1);
  }
  printf("%d\n", best);
  for (int i = 1; i <= best; i++) {
    int now = bestv[i];
    int f = 0;
    for (int j = 0; j < i && !f; j++) {
      for (int k = 1; k < 4 && !f; k++) {
        if (now == bestv[j] * (1 << k)) {
          printf("lea e%cx, [%d*e%cx]\n", 'a' + i, 1 << k, 'a' + j);
          f = 1;
          break;
        }
        for (int l = 0; l < i; l++) {
          if (now == bestv[j] * (1 << k) + bestv[l]) {
            printf("lea e%cx, [e%cx + %d*e%cx]\n", 'a' + i, 'a' + l, 1 << k,
                   'a' + j);
            f = 1;
            break;
          }
          if (now == bestv[j] + bestv[l]) {
            printf("lea e%cx, [e%cx + e%cx]\n", 'a' + i, 'a' + l, 'a' + j);
            f = 1;
            break;
          }
        }
      }
    }
  }
  return 0;
}
