#include <bits/stdc++.h>
using namespace std;
const int mul = 2;
const int pmul = 3;
struct Op {
  int type;
  int k;
  int y, z;
};
int n;
int reg[10];
Op op[10];
vector<Op> ans;
int tn;
bool used[256];
void rec(int num) {
  int tn;
  Op t[256];
  int r[256];
  if (num == 6) return;
  tn = 0;
  for (int type = 2; type <= 3; type++) {
    for (int k = 1; k <= 8; k *= 2) {
      for (int y = 0; y < num; y++) {
        for (int z = 0; z < num; z++) {
          int res;
          op[num].type = type;
          op[num].k = k;
          op[num].y = y;
          op[num].z = z;
          if (type == mul) {
            res = k * reg[y];
          } else {
            res = reg[y] + k * reg[z];
          }
          if ((res == n) && (num < ans.size())) {
            ans.clear();
            for (int i = 1; i <= num; i++) ans.push_back(op[i]);
          }
          if ((res <= n) && !used[res]) {
            t[tn] = op[num];
            r[tn] = res;
            tn++;
            used[res] = true;
          }
        }
      }
    }
  }
  for (int i = 0; i < tn; i++) {
    used[r[i]] = false;
  }
  for (int i = 0; i < tn; i++) {
    op[num] = t[i];
    reg[num] = r[i];
    rec(num + 1);
  }
}
int main() {
  cin >> n;
  if (n == 1) {
    cout << 0;
    return 0;
  }
  reg[0] = 1;
  ans.resize(10);
  rec(1);
  cout << ans.size() << endl;
  for (int i = 0; i < ans.size(); i++) {
    if (ans[i].type == mul) {
      printf("lea e%cx, [%d*e%cx]\n", 'a' + i + 1, ans[i].k, 'a' + ans[i].y);
    } else if (ans[i].type == pmul) {
      printf("lea e%cx, [e%cx + %d*e%cx]\n", 'a' + i + 1, 'a' + ans[i].y,
             ans[i].k, 'a' + ans[i].z);
    }
  }
  return 0;
}
