#include <bits/stdc++.h>
using namespace std;
struct cmd {
  int y, z, k;
};
unordered_map<bitset<256>, int> achieve;
unordered_map<bitset<256>, cmd> action;
string to_bs(bitset<256> mask) {
  string ans;
  for (int i = 0; i < (int)(64); i++) ans.push_back('0' + mask[i]);
  return ans;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int n;
  cin >> n;
  if (n == 1) {
    cout << 0 << endl;
    return 0;
  }
  bitset<256> start;
  start[1] = true;
  achieve[start] = -1;
  queue<bitset<256> > q;
  q.push(start);
  bool found = false;
  bitset<256> where;
  while (!found) {
    auto a = q.front();
    q.pop();
    for (int k = 2; k <= 8; k *= 2) {
      for (int y = (int)(1); y < (int)(256); y++) {
        if (!a[y]) continue;
        if (k * y > 255) break;
        if (a[k * y]) continue;
        auto b = a;
        b[k * y] = true;
        if (achieve.count(b)) {
          continue;
        }
        achieve[b] = k * y;
        action[b] = {y, -1, k};
        q.push(b);
        if (b[n]) {
          found = true;
          where = b;
        }
      }
    }
    for (int k = 1; k <= 8; k *= 2) {
      for (int y = (int)(1); y < (int)(256); y++) {
        if (!a[y]) continue;
        for (int z = (int)(1); z < (int)(256); z++) {
          if (!a[z]) continue;
          if (z + k * y > 255) break;
          if (a[z + k * y]) continue;
          auto b = a;
          b[z + k * y] = true;
          if (achieve.count(b)) {
            continue;
          }
          achieve[b] = z + k * y;
          action[b] = {y, z, k};
          q.push(b);
          if (b[n]) {
            found = true;
            where = b;
          }
        }
      }
    }
  }
  int steps = 0;
  bitset<256> cur = where;
  while (achieve[cur] != -1) {
    steps++;
    cur[achieve[cur]] = false;
  }
  cout << steps << endl;
  cur = where;
  vector<int> at(256, -1);
  at[1] = 0;
  int csteps = steps;
  vector<cmd> commands;
  while (achieve[cur] != -1) {
    at[achieve[cur]] = csteps;
    csteps--;
    commands.push_back(action[cur]);
    cur[achieve[cur]] = false;
  }
  reverse(commands.begin(), commands.end());
  int i = 1;
  for (auto command : commands) {
    cout << "lea e" << (char)('a' + i) << "x, ";
    if (command.z == -1) {
      cout << "[" << command.k << "*e" << (char)('a' + at[command.y]) << "x]"
           << endl;
    } else {
      cout << "[e" << (char)('a' + at[command.z]) << "x + ";
      cout << command.k << "*e" << (char)('a' + at[command.y]) << "x]" << endl;
    }
    ++i;
  }
  return 0;
}
