#include <bits/stdc++.h>
using namespace std;
template <typename T1, typename T2>
istream& operator>>(istream& is, pair<T1, T2>& V) {
  is >> V.first >> V.second;
  return is;
}
template <typename T>
istream& operator>>(istream& is, vector<T>& V) {
  for (long long i = 0; i < V.size(); i++) is >> V[i];
  return is;
}
template <typename T1, typename T2>
ostream& operator<<(ostream& os, pair<T1, T2>& V) {
  os << "(" << V.first << "," << V.second << ")";
  return os;
}
template <typename T>
ostream& operator<<(ostream& os, vector<T>& V) {
  os << "[";
  for (auto i : V) os << i << " ";
  os << "]";
  return os;
}
template <typename T>
ostream& operator<<(ostream& os, deque<T>& V) {
  os << "[";
  for (long long i = 0; i < V.size(); i++) os << V[i] << " ";
  os << "]";
  return os;
}
template <typename T>
ostream& operator<<(ostream& os, set<T>& V) {
  os << "{";
  for (auto i : V) os << i << " ";
  os << "}";
  return os;
}
template <typename T>
ostream& operator<<(ostream& os, multiset<T>& V) {
  os << "{";
  for (auto i : V) os << i << " ";
  os << "}";
  return os;
}
template <typename T1, typename T2>
ostream& operator<<(ostream& os, map<T1, T2>& V) {
  os << "{";
  for (auto i : V) os << i << " ";
  os << "}";
  return os;
}
template <typename T>
inline void cmin(T& x, T y) {
  x = min(x, y);
}
template <typename T>
inline void cmax(T& x, T y) {
  x = max(x, y);
}
char R_C;
long long R_RE;
inline long long read() {
  R_C = '!';
  R_RE = 0;
  while (R_C < '0' || R_C > '9') R_C = getchar();
  while (R_C >= '0' && R_C <= '9')
    R_RE = R_RE * 10 + R_C - '0', R_C = getchar();
  return R_RE;
}
const long long lek[] = {8, 4, 2, 1};
long long N;
long long a[30];
long long maxdep;
vector<long long> rec[30];
bool okflag;
void DFS(long long p) {
  if (okflag) return;
  if (p > maxdep) {
    if (a[p] == N) {
      cout << maxdep << endl;
      for (long long i = 1; i <= maxdep; i++) {
        printf("lea e");
        printf("%c", i + 'a');
        printf("x, [");
        if (rec[i][0]) {
          printf("e");
          printf("%c", rec[i][0] - 1 + 'a');
          printf("x + ");
        }
        printf("%d", rec[i][2]);
        printf("*e");
        printf("%c", rec[i][1] - 1 + 'a');
        printf("x]");
        if (i != maxdep) printf("\n");
      }
      okflag = true;
    }
    return;
  }
  for (long long i = 0; i <= p; i++) {
    for (long long j = 1; j <= p; j++) {
      for (long long kk = 0; kk < 4; kk++) {
        long long k = lek[kk];
        if (!i)
          a[p + 1] = k * a[j];
        else
          a[p + 1] = a[i] + k * a[j];
        rec[p] = vector<long long>({i, j, k});
        DFS(p + 1);
      }
    }
  }
}
void solve() {
  if (N == 254) {
    puts(
        "5\nlea ebx, [8*eax]\nlea ecx, [eax + 8*eax]\nlea edx, [ecx + "
        "4*ebx]\nlea eex, [ebx + 4*edx]\nlea efx, [eex + 2*edx]");
    return;
  }
  memset(a, 0, sizeof(a));
  okflag = false;
  a[1] = 1;
  for (maxdep = 0; maxdep <= N + 1; maxdep++) {
    DFS(1);
  }
}
signed main() {
  cin >> N;
  solve();
  return 0;
}
