#include <bits/stdc++.h>
using namespace std;
int n, deep;
int m[4] = {2, 4, 8, 1};
vector<short> r, br;
bool found = false;
void brute() {
  if (r.size() > deep || found) return;
  if (r.back() == n) {
    found = true;
    br = r;
    return;
  }
  vector<bool> used(n + 1, false);
  for (int i = 0; i <= r.size(); ++i)
    for (int j = 0; j < r.size(); ++j)
      for (int k = 0; k < 4; ++k)
        if ((i == r.size() ? 0 : r[i]) + r[j] * m[k] <= n &&
            (i == r.size() ? 0 : r[i]) + r[j] * m[k] > r.back())
          used[(i == r.size() ? 0 : r[i]) + r[j] * m[k]] = true;
  for (int i = 0; i < r.size(); ++i) used[r[i]] = false;
  for (int i = 2; i < used.size() && !found; ++i) {
    if (used[i]) {
      r.push_back(i);
      brute();
      r.pop_back();
    }
  }
}
int main() {
  cin >> n;
  r.resize(1, 1);
  r.reserve(8);
  for (int i = 1; i < 7 && !found; ++i) {
    deep = i;
    brute();
  }
  cout << br.size() - 1 << endl;
  vector<string> ans;
  while (br.size() > 1) {
    found = false;
    char buf[50];
    for (int i = 0; i < br.size() - 1; ++i)
      for (int j = 0; j < 3 && !found; ++j)
        if (br.back() == br[i] * m[j]) {
          sprintf(buf, "lea e%cx, [%d*e%cx]", char(br.size() - 1 + 'a'), m[j],
                  char(i + 'a'));
          found = true;
        }
    for (int i = 0; i < br.size() - 1; ++i)
      for (int j = 0; j < br.size() - 1 && !found; ++j)
        for (int k = 0; k < 4 && !found; ++k)
          if (br.back() == br[i] + br[j] * m[k]) {
            if (k == 3)
              sprintf(buf, "lea e%cx, [e%cx + e%cx]", char(br.size() - 1 + 'a'),
                      char(i + 'a'), char(j + 'a'));
            else
              sprintf(buf, "lea e%cx, [e%cx + %d*e%cx]",
                      char(br.size() - 1 + 'a'), char(i + 'a'), m[k],
                      char(j + 'a'));
            found = true;
          }
    ans.push_back(string(buf));
    br.pop_back();
  }
  for (int i = ans.size() - 1; i >= 0; --i) cout << ans[i] << endl;
  return 0;
}
