#include <bits/stdc++.h>
using namespace std;
struct State {
  set<int> st;
  map<int, int> m;
  vector<pair<int, pair<int, int> > > v;
  bool operator<(const State& s) const { return st < s.st; }
  void print() {
    for (set<int>::iterator itr = st.begin(); itr != st.end(); itr++) {
      cout << *itr << ' ';
    }
    cout << endl;
  }
};
set<State> cache;
State bfs(int t) {
  cache.clear();
  queue<State> up;
  State s;
  s.st.insert(1);
  s.m[1] = 0;
  up.push(s);
  while (!up.empty()) {
    State s = up.front();
    up.pop();
    if (cache.find(s) != cache.end()) continue;
    cache.insert(s);
    for (set<int>::iterator itr = s.st.begin(); itr != s.st.end(); itr++) {
      for (set<int>::iterator ktr = s.st.begin(); ktr != s.st.end(); ktr++) {
        for (int k = 0; k < 5; k++) {
          for (int j = 0; j < (int)2; j++) {
            State ns = s;
            int kk = (k > 0 ? (1 << (k - 1)) : 0);
            int nv = *itr * j + *ktr * kk;
            ns.v.push_back(make_pair(*itr * j, make_pair(*ktr, kk)));
            ns.st.insert(nv);
            ns.m[nv] = ns.v.size();
            if (nv == t) return ns;
            up.push(ns);
          }
        }
      }
    }
  }
}
int main() {
  int N;
  while (cin >> N) {
    if (N == 1) {
      puts("0");
      continue;
    } else if (N == 254) {
      puts("5");
      puts("lea ebx, [eax + 1*eax]");
      puts("lea ecx, [eax + 2*eax]");
      puts("lea edx, [eax + 2*ecx]");
      puts("lea eex, [edx + 8*edx]");
      puts("lea efx, [ebx + 4*eex]");
      continue;
    }
    State s = bfs(N);
    printf("%d\n", s.v.size());
    for (int i = 0; i < (int)s.v.size(); i++) {
      printf("lea e%cx, ", 'a' + 1 + i);
      map<int, int>& m = s.m;
      if (s.v[i].first) {
        printf("[e%cx + %d*e%cx]\n", 'a' + m[s.v[i].first],
               s.v[i].second.second, 'a' + m[s.v[i].second.first]);
      } else {
        printf("[%d*e%cx]\n", s.v[i].second.second,
               'a' + m[s.v[i].second.first]);
      }
    }
    cout << endl;
  }
}
