#include <bits/stdc++.h>
using namespace std;
const int maxn = (int)5e5 + 10;
const int inf = (int)2e9;
int a[maxn];
int n;
pair<int, int> res[maxn];
int resc = 0;
bool good(int x) {
  while (x > 0) {
    if (x % 10 != 4 && x % 10 != 7) return false;
    x /= 10;
  }
  return true;
}
const int N = 1 << 17;
int t[2 * N];
int tn[2 * N];
void init() {
  for (int i = 2 * N - 1; i > 0; i--) {
    if (i >= N) {
      t[i] = a[i - N];
      tn[i] = i - N;
    } else {
      if (t[2 * i] < t[2 * i + 1]) {
        t[i] = t[2 * i];
        tn[i] = tn[2 * i];
      } else {
        t[i] = t[2 * i + 1];
        tn[i] = tn[2 * i + 1];
      }
    }
  }
}
void upd(int x, int dx) {
  x += N;
  t[x] = dx;
  tn[x] = x - N;
  while (x > 1) {
    x /= 2;
    if (t[2 * x] < t[2 * x + 1]) {
      t[x] = t[2 * x];
      tn[x] = tn[2 * x];
    } else {
      t[x] = t[2 * x + 1];
      tn[x] = tn[2 * x + 1];
    }
  }
}
int getn(int l, int r) {
  l += N;
  r += N;
  int d = inf + 1;
  int dc = -100;
  while (l <= r) {
    if (l % 2 == 1) {
      if (t[l] < d) {
        d = t[l];
        dc = tn[l];
      }
    }
    if (r % 2 == 0) {
      if (t[r] < d) {
        d = t[r];
        dc = tn[r];
      }
    }
    l = (l + 1) / 2;
    r = (r - 1) / 2;
  }
  return dc;
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) scanf("%d", &a[i]);
  bool tr = true;
  for (int i = 0; i < n - 1; i++)
    if (a[i] > a[i + 1]) tr = false;
  if (tr) {
    printf("0");
    return 0;
  }
  int x = -1;
  for (int i = 0; i < n; i++) {
    if (good(a[i])) {
      x = i;
      break;
    }
  }
  init();
  if (x == -1) {
    printf("-1\n");
    return 0;
  }
  int t = -1;
  for (int i = 0; i < n; i++) {
    int g = getn(i, n - 1);
    if (x != t && (t >= 0 && a[t] < a[g])) g = t;
    if (g == x) {
      t = i;
      a[x] = inf;
    }
    if (g == i) continue;
    if (g == x) {
      res[resc++] = make_pair(i, x);
      upd(i, a[x]);
      upd(x, a[i]);
      swap(a[x], a[i]);
      x = i;
    } else if (i == x) {
      res[resc++] = make_pair(g, x);
      upd(g, a[x]);
      upd(x, a[g]);
      swap(a[x], a[g]);
      x = g;
    } else {
      res[resc++] = make_pair(x, i);
      res[resc++] = make_pair(i, g);
      upd(i, a[g]);
      upd(x, a[i]);
      upd(g, a[x]);
      swap(a[x], a[i]);
      swap(a[i], a[g]);
      x = g;
    }
  }
  printf("%d\n", resc);
  for (int i = 0; i < resc; i++)
    printf("%d %d\n", res[i].first + 1, res[i].second + 1);
  return 0;
}
