#include <bits/stdc++.h>
using namespace std;
int n;
int st[26];
string moves[26];
int iter = 0;
inline string ch(int a) {
  string s = "";
  s += (a + 'a');
  return s;
}
inline string ch1(int a) {
  string s = "";
  s += (a + '0');
  return s;
}
bool used[257];
bool flag;
void dfs(int depth) {
  if (depth >= iter) return;
  bool reach[257];
  memset(&reach, 0, sizeof(reach));
  for (int i = 0, _n = (depth + 1); i < _n; i++) {
    for (int m = 8; m >= 1; m >>= 1) {
      int next;
      for (int j = -1, _b = (depth); j <= _b; j++) {
        if (j == -1)
          next = m * st[i];
        else
          next = st[j] + m * st[i];
        if (next > n) break;
        if (!(next < st[depth] || used[next] || reach[next])) {
          reach[next] = 1;
          if (j == -1)
            moves[depth] =
                (ch(depth + 1) + "x, " + "[" + ch1(m) + "*e" + ch(i) + "x]");
          else
            moves[depth] = (ch(depth + 1) + "x, " + "[e" + ch(j) + "x + " +
                            ch1(m) + "*e" + ch(i) + "x]");
          if (next == n) {
            printf("%d\n", iter);
            for (int i = 0, _n = (iter); i < _n; i++)
              cout << "lea e" << moves[i] << endl;
            exit(0);
          }
          used[next] = 1;
          st[depth + 1] = next;
          dfs(depth + 1);
          used[next] = 0;
          st[depth + 1] = 0;
        }
      }
    }
  }
}
int main() {
  scanf("%d", &n);
  if (n == 1) {
    printf("0\n");
    return 0;
  }
  st[0] = 1;
  while (1) {
    iter++;
    dfs(0);
  }
  return 0;
}
