#include <bits/stdc++.h>
using namespace std;
int ins[300];
struct Rec {
  int n, p;
  int a[10];
} st[1000000];
void Print(int now) {
  int i, j, x, pre, ret;
  if (now == 0) return;
  pre = st[now].p;
  ret = st[now].a[st[now].n - 1];
  for (i = 0; i < st[pre].n; i++)
    for (x = 2; x <= 8; x <<= 1)
      if (st[pre].a[i] * x == ret) {
        Print(pre);
        printf("lea e%cx, [%d*e%cx]\n", st[now].n + 'a' - 1, x, 'a' + i);
        return;
      }
  for (i = 0; i < st[pre].n; i++)
    for (j = 0; j < st[pre].n; j++)
      for (x = 1; x <= 8; x <<= 1)
        if (st[pre].a[i] + st[pre].a[j] * x == ret) {
          Print(pre);
          printf("lea e%cx, [e%cx + %d*e%cx]\n", st[now].n + 'a' - 1, i + 'a',
                 x, j + 'a');
          return;
        }
}
int main() {
  int i, j, n, x, low, top, lim, ret;
  scanf("%d", &n);
  if (n == 1) {
    puts("0");
    return 0;
  }
  st[0].n = 1;
  st[0].a[0] = 1;
  for (low = top = 0; low <= top; low++) {
    memset(ins, 0, sizeof(ins));
    lim = st[low].a[st[low].n - 1];
    for (i = 0; i < st[low].n; i++)
      for (x = 2; x <= 8; x <<= 1) {
        ret = st[low].a[i] * x;
        if (ret <= lim || ret > n) continue;
        ins[ret] = 1;
      }
    for (i = 0; i < st[low].n; i++)
      for (j = 0; j < st[low].n; j++)
        for (x = 1; x <= 8; x <<= 1) {
          ret = st[low].a[i] + st[low].a[j] * x;
          if (ret <= lim || ret > n) continue;
          ins[ret] = 1;
        }
    for (i = lim + 1; i <= n; i++)
      if (ins[i]) {
        st[++top].n = st[low].n;
        for (j = 0; j < st[low].n; j++) st[top].a[j] = st[low].a[j];
        st[top].a[st[top].n++] = i;
        st[top].p = low;
        if (i == n) {
          printf("%d\n", st[top].n - 1);
          Print(top);
          return 0;
        }
      }
  }
  return 0;
}
