#include <bits/stdc++.h>
using namespace std;
const int XINYANG = 3;
struct status {
  int s[XINYANG];
};
int ans, n;
stack<string> out;
void Search_Alogirhtm(status cur, int step) {
  for (int i = 0; i < XINYANG; ++i)
    if (cur.s[i] == n) {
      ans = min(ans, step - 1);
      return;
    }
  for (int i = 0; i < XINYANG; ++i) {
    for (int j = 0; j < XINYANG; ++j) {
      if (cur.s[j] == 0)
        continue;
      else {
        if (step >= ans) return;
        for (int k = 1; k <= 8; (k <<= 1)) {
          if (step >= ans) return;
          status newst = cur;
          newst.s[i] = cur.s[j] * k;
          if (newst.s[i] > n) continue;
          Search_Alogirhtm(newst, step + 1);
        }
        for (int v = 0; v < XINYANG; ++v) {
          if (cur.s[v] == 0) continue;
          for (int k = 1; k <= 8; (k <<= 1)) {
            if (step >= ans) return;
            status newst = cur;
            newst.s[i] = cur.s[j] + k * cur.s[v];
            if (newst.s[i] > n) continue;
            Search_Alogirhtm(newst, step + 1);
          }
        }
      }
    }
  }
  return;
}
string Go(int i, int j, int k) {
  string res = "lea e";
  res.push_back(i + 'a');
  res.push_back('x');
  res = res + ", [";
  if (k != 1) {
    res.push_back(k + '0');
    res.push_back('*');
  }
  res.push_back('e');
  res.push_back(j + 'a');
  res.push_back('x');
  res.push_back(']');
  return res;
}
string Go(int i, int j, int v, int k) {
  string res = "lea e";
  res.push_back(i + 'a');
  res.push_back('x');
  res = res + ", [";
  res.push_back('e');
  res.push_back(j + 'a');
  res.push_back('x');
  res = res + " + ";
  if (k != 1) {
    res.push_back(k + '0');
    res.push_back('*');
  }
  res.push_back('e');
  res.push_back(v + 'a');
  res.push_back('x');
  res.push_back(']');
  return res;
}
bool Print_Ans(status cur, int step) {
  for (int i = 0; i < XINYANG; ++i)
    if (cur.s[i] == n) return true;
  for (int i = 0; i < XINYANG; ++i) {
    for (int j = 0; j < XINYANG; ++j) {
      if (cur.s[j] == 0)
        continue;
      else {
        if (step >= ans) return false;
        for (int k = 1; k <= 8; (k <<= 1)) {
          if (step >= ans) return false;
          status newst = cur;
          newst.s[i] = cur.s[j] * k;
          if (newst.s[i] > n) continue;
          if (Print_Ans(newst, step + 1)) {
            out.push(Go(i, j, k));
            return true;
          }
        }
        for (int v = 0; v < XINYANG; ++v) {
          if (cur.s[v] == 0) continue;
          for (int k = 1; k <= 8; (k <<= 1)) {
            if (step >= ans) return false;
            status newst = cur;
            newst.s[i] = cur.s[j] + k * cur.s[v];
            if (newst.s[i] > n) continue;
            if (Print_Ans(newst, step + 1)) {
              out.push(Go(i, j, v, k));
              return true;
            }
          }
        }
      }
    }
  }
  return false;
}
status S;
int main(int argc, char *argv[]) {
  scanf("%d", &n);
  ans = min(n, 6);
  for (int i = 0; i < XINYANG; ++i) S.s[i] = 0;
  S.s[0] = 1;
  Search_Alogirhtm(S, 1);
  Print_Ans(S, 0);
  printf("%d\n", ans);
  while (!out.empty()) {
    cout << out.top() << endl;
    out.pop();
  }
  return 0;
}
