#include <bits/stdc++.h>
using namespace std;
template <class T>
T f_min(T x, T y) {
  return x < y ? x : y;
}
template <class T>
T f_max(T x, T y) {
  return x > y ? x : y;
}
template <class T>
T f_abs(T x) {
  return x < 0 ? -x : x;
}
int N;
void get_data() { scanf("%d", &N); }
int sto[3000], sn;
struct Unit {
  int a, b, c;
  int num, typ;
  Unit() {}
  Unit(int _a, int _b, int _c, int _num) {
    a = _a;
    b = _b;
    c = _c;
    num = _num;
    typ = 0;
  }
  Unit(int _a, int _c, int _num) {
    a = _a;
    c = _c;
    num = _num;
    typ = 1;
  }
};
vector<Unit> ans, temp;
bool flag = 0;
void update(vector<Unit> a) {
  if (!flag || temp.size() < ans.size()) ans = temp;
  flag = 1;
}
bool mk[260];
void dfs(int vnum, int dep) {
  int i, j, k;
  for (i = 0; i < sn; i++) {
    for (j = 0; j < sn; j++) {
      for (k = 1; k <= 8; k <<= 1) {
        sto[sn++] = sto[i] + k * sto[j];
        temp.push_back(Unit(sn - 1, i, j, k));
        if (sto[sn - 1] == N)
          update(temp);
        else if (sto[sn - 1] > 255 || mk[sto[sn - 1]] ||
                 flag && ans.size() - 1 <= temp.size()) {
        } else
          mk[sto[sn - 1]] = 1, dfs(sto[sn - 1], dep + 1), mk[sto[sn - 1]] = 0;
        temp.pop_back();
        sn--;
        if (sto[sn] == N) return;
      }
    }
  }
  for (i = 0; i < sn; i++) {
    for (k = 1; k <= 8; k <<= 1) {
      sto[sn++] = sto[i] * k;
      temp.push_back(Unit(sn - 1, i, k));
      if (sto[sn - 1] == N)
        update(temp);
      else if (sto[sn - 1] > 255 || mk[sto[sn - 1]] ||
               flag && ans.size() - 1 <= temp.size()) {
      } else
        mk[sto[sn - 1]] = 1, dfs(sto[sn - 1], dep + 1), mk[sto[sn - 1]] = 0;
      temp.pop_back();
      sn--;
      if (sto[sn] == N) return;
    }
  }
}
void run() {
  sn = 0;
  sto[sn++] = 1;
  memset(mk, 0, sizeof mk);
  mk[1] = 1;
  if (N != 1) dfs(1, 0);
  printf("%d\n", ans.size());
  for (int i = 0; i < ans.size(); i++) {
    if (ans[i].typ == 0) {
      printf("lea e%cx, [e%cx + %d*e%cx]\n", ans[i].a + 'a', ans[i].b + 'a',
             ans[i].num, ans[i].c + 'a');
    } else {
      printf("lea e%cx, [%d*e%cx]\n", ans[i].a + 'a', ans[i].num,
             ans[i].c + 'a');
    }
  }
}
int main() {
  get_data();
  run();
  return 0;
}
