#include <bits/stdc++.h>
using namespace std;
inline long long read() {
  long long Hashimoto = 0, Kanna = 1;
  char I_Love = getchar();
  while (I_Love < '0' || I_Love > '9') {
    if (I_Love == '-') Kanna = -1;
    I_Love = getchar();
  }
  while (I_Love >= '0' && I_Love <= '9') {
    Hashimoto = Hashimoto * 10 + I_Love - '0';
    I_Love = getchar();
  }
  return Hashimoto * Kanna;
}
template <typename T1, typename T2>
inline void Umax(T1 &a, T2 b) {
  if (a < b) a = b;
}
template <typename T1, typename T2>
inline void Umin(T1 &a, T2 b) {
  if (a > b) a = b;
}
struct operation {
  int type;
  int x, y, z, k;
  operation(int a, int b, int c, int d, int e) {
    type = a;
    x = b;
    y = c;
    z = d;
    k = e;
  }
};
const int mul[4] = {1, 2, 4, 8};
int n;
int val[33];
vector<operation> ans;
int ans_size = (int)1e9;
vector<operation> sav;
void dfs(int pos) {
  if (pos >= ans_size) return;
  if (val[pos] == n) {
    ans = sav;
    ans_size = pos;
    return;
  }
  int x = pos + 1;
  for (int y = pos; y >= 0; y--) {
    for (int z = pos; z >= 0; z--) {
      for (int k = 3; k >= 0; k--) {
        int nval = val[y] + val[z] * mul[k];
        if (nval <= n) {
          val[x] = nval;
          sav.push_back(operation(2, x, y, z, k));
          dfs(x);
          sav.pop_back();
        }
      }
    }
  }
  for (int y = pos; y >= 0; y--) {
    for (int k = 3; k >= 0; k--) {
      int nval = val[y] * mul[k];
      if (nval <= n) {
        val[x] = nval;
        sav.push_back(operation(1, x, y, -1, k));
        dfs(x);
        sav.pop_back();
      }
    }
  }
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  ;
  cin >> n;
  val[0] = 1;
  dfs(0);
  printf("%d\n", ans_size);
  for (int i = 0; i < (ans.size()); ++i) {
    operation op = ans[i];
    if (op.type == 1) {
      printf("lea e%cx, [%d*e%cx]\n", 'a' + op.x, mul[op.k], 'a' + op.y);
    } else {
      printf("lea e%cx, [e%cx + %d*e%cx]\n", 'a' + op.x, 'a' + op.y, mul[op.k],
             'a' + op.z);
    }
  }
  return 0;
}
