#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:33554432")
using namespace std;
const double PI = 2 * acos(0.0);
const double EPS = 1e-8;
const int INF = (1 << 30) - 1;
struct tr {
  int a, b, k;
};
int n, ops;
bool u[256];
tr tek[1000];
int nums[256];
void printsol() {
  cout << ops << endl;
  for (int i = 0; i < ops; ++i) {
    int v = tek[i].a + tek[i].k * tek[i].b;
    cout << "lea e";
    printf("%c", 'a' + nums[v]);
    cout << "x, [";
    if (tek[i].a) {
      cout << "e";
      printf("%c", 'a' + nums[tek[i].a]);
      cout << "x + ";
    };
    cout << tek[i].k << "*e";
    printf("%c", 'a' + nums[tek[i].b]);
    cout << "x]" << endl;
  };
  exit(0);
};
void getsol(int steps) {
  if (steps == ops) {
    if (u[n]) printsol();
    return;
  };
  for (int k = 1; k <= 8; k *= 2) {
    for (int i = 0; i < n + 1; ++i)
      if (i == 0 || u[i])
        for (int j = 0; j < n + 1; ++j)
          if (u[j])
            if (i + k * j <= n && !u[i + k * j]) {
              u[i + k * j] = true;
              tek[steps].a = i;
              tek[steps].b = j;
              tek[steps].k = k;
              nums[i + k * j] = steps + 1;
              getsol(steps + 1);
              u[i + k * j] = false;
            };
  };
};
int main() {
  u[1] = true;
  nums[1] = 0;
  cin >> n;
  ops = 0;
  while (true) {
    getsol(0);
    ++ops;
  };
  return 0;
};
