#include <bits/stdc++.h>
using namespace std;
int a[30], n;
struct inst {
  int ty, k, y, z;
  inst() { ty = k = y = z = 0; }
  inst(int kk, int yy, int zz) { ty = 4, y = yy, z = zz, k = kk; }
  inst(int kk, int yy) { ty = 3, y = yy, k = kk; }
} oup[30], ans[30];
int res = 16;
void dfs(int dep) {
  if (dep >= res) return;
  for (int i = 0; i < dep; i++) {
    for (int j = i; j < dep; j++) {
      for (int k = 1; k <= 8; k <<= 1) {
        a[dep] = a[i] + a[j] * k;
        oup[dep] = inst(k, i, j);
        if (a[dep] == n) {
          if (dep < res) {
            for (int ii = 0; ii <= dep; ii++) ans[ii] = oup[ii];
            res = dep;
          }
          return;
        } else if (a[dep] < n && a[dep] > a[dep - 1])
          dfs(dep + 1);
        a[dep] = a[j] + a[i] * k;
        oup[dep] = inst(k, j, i);
        if (a[dep] == n) {
          if (dep < res) {
            for (int ii = 0; ii <= dep; ii++) ans[ii] = oup[ii];
            res = dep;
          }
          return;
        } else if (a[dep] < n && a[dep] > a[dep - 1])
          dfs(dep + 1);
      }
    }
  }
  for (int k = 1; k <= 8; k <<= 1) {
    for (int i = dep - 1; i >= 0 && a[i] * k >= a[dep - 1]; i--) {
      a[dep] = a[i] * k;
      oup[dep] = inst(k, i);
      if (a[dep] == n) {
        if (dep < res) {
          for (int ii = 1; ii <= dep; ii++) ans[ii] = oup[ii];
          res = dep;
        }
        return;
      } else if (a[dep] < n && a[dep] >= a[dep - 1])
        dfs(dep + 1);
    }
  }
}
int main() {
  scanf("%d", &n);
  if (n == 1) {
    cout << 0 << endl;
    return 0;
  }
  a[0] = 1;
  dfs(1);
  cout << res << endl;
  for (int i = 1; i <= res; i++) {
    if (ans[i].ty == 4)
      printf("lea e%cx, [e%cx + %d*e%cx]\n", i + 'a', ans[i].y + 'a', ans[i].k,
             ans[i].z + 'a');
    else if (ans[i].ty == 3)
      printf("lea e%cx, [%d*e%cx]\n", i + 'a', ans[i].k, ans[i].y + 'a');
  }
}
