#include <bits/stdc++.h>
using namespace std;
int n;
const int up[] = {1, 2, 4, 8};
int a[20];
vector<string> com;
string ver(int id) {
  string now = "eax";
  now[1] += id;
  return now;
}
bool solve(int tar, int dep) {
  if (tar == dep) {
    if (a[dep - 1] == n) return true;
    return false;
  }
  for (int i = 0; i < dep; i++) {
    for (int j = 0; j < 4; j++) {
      int &num = a[dep];
      num = a[i] * up[j];
      if ((dep == tar - 1 && num != n) || num <= a[dep - 1]) continue;
      string buf;
      buf += "lea ";
      buf += ver(dep);
      buf += ", ";
      buf += "[";
      if (j != 0) buf.push_back('0' + up[j]), buf.push_back('*');
      buf += ver(i);
      buf += "]";
      com.push_back(buf);
      if (dep == tar - 1 && num == n) return true;
      if (solve(tar, dep + 1)) return true;
      num = 0;
      com.pop_back();
    }
  }
  for (int i = 0; i < dep; i++) {
    for (int j = 0; j < dep; j++) {
      for (int k = 0; k < 4; k++) {
        int &num = a[dep];
        num = a[i] + a[j] * up[k];
        if ((dep == tar - 1 && num != n) || num <= a[dep - 1]) continue;
        string buf;
        buf += "lea ";
        buf += ver(dep);
        buf += ", ";
        buf += "[";
        buf += ver(i);
        buf += " + ";
        if (k != 0) buf.push_back('0' + up[k]), buf.push_back('*');
        buf += ver(j);
        buf += "]";
        com.push_back(buf);
        if (dep == tar - 1 && num == n) return true;
        if (solve(tar, dep + 1)) return true;
        num = 0;
        com.pop_back();
      }
    }
  }
  return false;
}
int main() {
  scanf("%d", &n);
  if (n == 1)
    printf("0\n");
  else {
    int tim = 0;
    while (++tim) {
      memset(a, 0, sizeof(a));
      a[0] = 1;
      com.clear();
      if (solve(tim, 1)) break;
    }
    printf("%d\n", --tim);
    for (int i = 0; i < (int)com.size(); i++) {
      cout << com[i] << "\n";
    }
  }
  return 0;
}
