func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 1e5 + 7;   bool vis[N];   int n, a[N], go[N];   pair<int, int> v[N];   bool isLucky(int x) {     while (x > 0) {       if (x % 10 != 4 && x % 10 != 7) return false;       x /= 10;     }     return true;   }   void solve() {     bool hasLN = false;     for (int i = (0); i < (n); ++i)       if (isLucky(a[i])) {         hasLN = true;         break;       }     if (!hasLN) {       for (int i = (0); i < (n - 1); ++i)         if (a[i] > a[i + 1]) {           puts( -1 );           return;         }       puts( 0 );       return;     }     for (int i = (0); i < (n); ++i) v[i] = make_pair(a[i], i);     sort(v, v + n);     for (int i = (0); i < (n); ++i) go[v[i].second] = i;     vector<pair<int, int> > ans;     for (int i = (0); i < (n); ++i)       if (!vis[i] && isLucky(a[i])) {         vector<int> vec;         int x = go[i];         while (!vis[x]) {           vec.push_back(x), vis[x] = true;           x = go[x];         }         if (((int)(vec).size()) == 1) continue;         for (int j = (((int)(vec).size()) - 1) - 1; j >= (0); --j) {           ans.push_back(make_pair(vec[j], vec[j + 1]));           swap(a[vec[j]], a[vec[j + 1]]);         }       }     int p;     for (int i = (0); i < (n); ++i)       if (vis[i] && isLucky(a[i])) {         p = i;         break;       }     for (int i = (0); i < (n); ++i)       if (!vis[i]) {         vector<int> vec;         int x = i;         while (!vis[x]) {           vec.push_back(x), vis[x] = true;           x = go[x];         }         if (((int)(vec).size()) == 1) continue;         for (int j = (((int)(vec).size())) - 1; j >= (0); --j) {           ans.push_back(make_pair(p, vec[j]));           swap(p, vec[j]);           swap(a[p], a[vec[j]]);         }         ans.push_back(make_pair(p, vec.back()));         swap(p, vec.back());         swap(a[p], a[vec.back()]);       }     if (((int)(ans).size()) > 2 * n) {       puts( -1 );       return;     }     printf( %d n , ((int)(ans).size()));     for (int i = (0); i < (((int)(ans).size())); ++i) {       int x, y;       tie(x, y) = ans[i];       printf( %d %d n , x + 1, y + 1);     }   }   int main() {     scanf( %d , &n);     for (int i = (0); i < (n); ++i) scanf( %d , a + i);     solve();     return 0;   }   