#include <bits/stdc++.h>
using namespace std;
const int d[] = {1, 2, 4, 8};
int n;
vector<int> arr;
vector<string> now, best;
bool dp3[256][256][256];
bool dp2[256][256];
bool dp1[256];
void DFS(int v) {
  if (v > n || now.size() > 5) return;
  if (!best.empty() && now.size() >= best.size()) return;
  if (v == n) {
    if (best.empty() || now.size() < best.size()) best = now;
    return;
  }
  if (!best.empty() && now.size() >= best.size() - 1) return;
  if (arr.size() == 3) {
    if (dp2[arr[1]][arr[2]]) return;
    dp2[arr[1]][arr[2]] = true;
  }
  if (arr.size() == 4) {
    if (dp3[arr[1]][arr[2]][arr[3]]) return;
    dp3[arr[1]][arr[2]][arr[3]] = true;
  }
  string s;
  for (int k = 1; k < 4; k++) {
    int res = arr.back() * d[k];
    s = (char)d[k] + '0';
    s += char('a' + arr.size() - 1);
    now.push_back(s);
    arr.push_back(res);
    DFS(res);
    now.pop_back();
    arr.pop_back();
  }
  for (int i = 0; i < arr.size(); i++)
    for (int j = 0; j < arr.size(); j++)
      for (int k = 0; k < 4; k++) {
        int res = arr[i] + arr[j] * d[k];
        if (res > n) continue;
        if (find(arr.begin(), arr.end(), res) != arr.end()) continue;
        s = char('a' + i);
        s += (char)d[k] + '0';
        s += char('a' + j);
        now.push_back(s);
        arr.push_back(res);
        DFS(res);
        now.pop_back();
        arr.pop_back();
      }
}
int main() {
  cin >> n;
  memset(dp1, false, sizeof(dp1));
  memset(dp2, false, sizeof(dp2));
  memset(dp3, false, sizeof(dp3));
  arr.push_back(1);
  DFS(1);
  cout << best.size() << endl;
  for (int i = 0; i < best.size(); i++) {
    printf("lea e%cx, [", 'a' + i + 1);
    if (best[i].length() == 2)
      printf("%c*e%cx]\n", best[i][0], best[i][1]);
    else {
      if (best[i][1] == '1')
        printf("e%cx + e%cx]\n", best[i][0], best[i][2]);
      else
        printf("e%cx + %c*e%cx]\n", best[i][0], best[i][1], best[i][2]);
    }
  }
  return 0;
}
