#include <bits/stdc++.h>
using namespace std;
const int MaxN = 255;
int n;
int reg[26];
struct Operation {
  int r1, r2, k, r3;
} op[MaxN];
int ans;
Operation ans_op[MaxN];
void dfs(int x) {
  if (x > ans || x > 6) return;
  if (reg[x - 1] == n && x - 1 < ans) {
    ans = x - 1;
    for (int i = 1; i <= ans; ++i) ans_op[i] = op[i];
    return;
  }
  for (int i = -1; i < x; ++i)
    for (int j = 0; j < x; ++j)
      for (int k = 1; k <= 8; k <<= 1) {
        op[x].r1 = x, op[x].r2 = i, op[x].k = k, op[x].r3 = j;
        if (i != -1)
          reg[x] = reg[i] + k * reg[j];
        else
          reg[x] = k * reg[j];
        if (reg[x] <= reg[x - 1]) continue;
        if (reg[x] > n) continue;
        dfs(x + 1);
      }
}
int main() {
  scanf("%d", &n);
  reg[0] = 1;
  ans = 0x7fffffff;
  dfs(1);
  printf("%d\n", ans);
  for (int i = 1; i <= ans; ++i)
    if (ans_op[i].r2 != -1)
      printf("lea e%cx, [e%cx + %d*e%cx]\n", ans_op[i].r1 + 'a',
             ans_op[i].r2 + 'a', ans_op[i].k, ans_op[i].r3 + 'a');
    else
      printf("lea e%cx, [%d*e%cx]\n", ans_op[i].r1 + 'a', ans_op[i].k,
             ans_op[i].r3 + 'a');
  return 0;
}
