#include <bits/stdc++.h>
using namespace std;
const double PI = 3.1415926535897932384626433832795;
const double EPS = 1e-9;
set<int> good;
void gen(int x) {
  good.insert(x);
  if (x > 100 * 1000 * 1000) {
    return;
  }
  gen(10 * x + 4);
  gen(10 * x + 7);
}
vector<pair<int, int> > swaps;
void addSwap(int i, int j) {
  if (i != j) {
    swaps.push_back(pair<int, int>(i, j));
  }
}
bool fail;
vector<pair<int, int> > solve(const vector<int>& seq____) {
  vector<int> seq = seq____;
  swaps.clear();
  fail = false;
  int where_good = -1;
  int n = seq.size();
  bool sorted = true;
  for (int i = 0; i < n; ++i) {
    if (i > 0 && seq[i] < seq[i - 1]) {
      sorted = false;
    }
    if (good.count(seq[i])) {
      where_good = i;
    }
  }
  if (where_good == -1) {
    if (!sorted) {
      fail = true;
    }
    return swaps;
  }
  int goodNumber = seq[where_good];
  int amountLess = 0;
  for (int i = 0; i < n; ++i) {
    if (seq[i] < goodNumber) {
      ++amountLess;
    }
  }
  vector<int> positions;
  for (int i = 0; i < n; ++i) {
    if (i != amountLess) {
      positions.push_back(i);
    }
  }
  set<pair<int, int> > unsorted;
  for (int i = 0; i < n; ++i) {
    if (i == where_good) {
      continue;
    }
    unsorted.insert(pair<int, int>(seq[i], i));
  }
  int idInPositions = 0;
  while (!unsorted.empty()) {
    pair<int, int> cur = *unsorted.begin();
    unsorted.erase(unsorted.begin());
    if (cur.second == positions[idInPositions]) {
      ++idInPositions;
      continue;
    }
    int firstSwapPosition = positions[idInPositions];
    bool firstErased = unsorted.count(
        pair<int, int>(seq[firstSwapPosition], firstSwapPosition));
    unsorted.erase(pair<int, int>(seq[firstSwapPosition], firstSwapPosition));
    swap(seq[where_good], seq[firstSwapPosition]);
    if (firstErased) {
      unsorted.insert(pair<int, int>(seq[where_good], where_good));
    }
    addSwap(where_good, positions[idInPositions]);
    where_good = firstSwapPosition;
    int secondSwapPosition = cur.second;
    bool secondErased = unsorted.count(
        pair<int, int>(seq[secondSwapPosition], secondSwapPosition));
    unsorted.erase(pair<int, int>(seq[secondSwapPosition], secondSwapPosition));
    swap(seq[where_good], seq[secondSwapPosition]);
    if (secondErased) {
      unsorted.insert(pair<int, int>(seq[where_good], where_good));
    }
    addSwap(where_good, secondSwapPosition);
    where_good = secondSwapPosition;
    ++idInPositions;
  }
  return swaps;
}
int main() {
  int n;
  gen(4);
  gen(7);
  while (cin >> n) {
    vector<int> seq(n);
    for (int i = 0; i < seq.size(); ++i) {
      scanf("%d", &seq[i]);
    }
    vector<pair<int, int> > res = solve(seq);
    if (fail) {
      cout << -1 << endl;
    } else {
      cout << res.size() << endl;
      for (int i = 0; i < res.size(); ++i) {
        printf("%d %d\n", res[i].first + 1, res[i].second + 1);
      }
    }
    cout << endl;
  }
  return 0;
}
