#include <bits/stdc++.h>
using namespace std;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  long long int N;
  cin >> N;
  long long int A[N][3];
  map<pair<long long int, long long int>, vector<long long int> > m;
  long long int a, b, c, i, j, k, ans = 0;
  set<long long int> check;
  for (i = 0; i < N; i++) {
    cin >> A[i][0] >> A[i][1] >> A[i][2];
    sort(A[i], A[i] + 3);
    a = min({A[i][0], A[i][1], A[i][2]});
    check.insert(a);
    ans = max(ans, a);
    if (m[make_pair(A[i][0], A[i][1])].size() <= 1)
      m[make_pair(A[i][0], A[i][1])].push_back(A[i][2]);
    else {
      sort(m[make_pair(A[i][0], A[i][1])].begin(),
           m[make_pair(A[i][0], A[i][1])].end());
      if (m[make_pair(A[i][0], A[i][1])][0] < A[i][2])
        m[make_pair(A[i][0], A[i][1])][0] = A[i][2];
    }
    if (m[make_pair(A[i][1], A[i][2])].size() <= 1)
      m[make_pair(A[i][1], A[i][2])].push_back(A[i][0]);
    else {
      sort(m[make_pair(A[i][1], A[i][2])].begin(),
           m[make_pair(A[i][1], A[i][2])].end());
      if (m[make_pair(A[i][1], A[i][2])][0] < A[i][0])
        m[make_pair(A[i][1], A[i][2])][0] = A[i][0];
    }
    if (m[make_pair(A[i][0], A[i][2])].size() <= 1)
      m[make_pair(A[i][0], A[i][2])].push_back(A[i][1]);
    {
      sort(m[make_pair(A[i][0], A[i][2])].begin(),
           m[make_pair(A[i][0], A[i][2])].end());
      if (m[make_pair(A[i][0], A[i][2])][0] < A[i][1])
        m[make_pair(A[i][0], A[i][2])][0] = A[i][1];
    }
  }
  long long int q[2][3];
  auto x = m.begin();
  while (x != m.end()) {
    a = (x->first).first;
    b = (x->first).second;
    if ((x->second).size() == 1)
      c = (x->second)[0];
    else
      c = (x->second)[0] + (x->second)[1];
    if (min({a, b, c}) > ans) {
      q[0][0] = a;
      q[0][1] = b;
      q[0][2] = (x->second)[0];
      q[1][0] = a;
      q[1][1] = b;
      q[1][2] = (x->second)[1];
    }
    ans = max({ans, min({a, b, c})});
    x++;
  }
  if (check.find(ans) != check.end()) {
    cout << "1\n";
    for (i = 0; i < N; i++) {
      a = min({A[i][0], A[i][1], A[i][2]});
      if (ans == a) break;
    }
    cout << i + 1 << "\n";
    return 0;
  }
  cout << "2\n";
  sort(q[0], q[0] + 3);
  sort(q[1], q[1] + 3);
  for (i = 0; i < N; i++) {
    if ((A[i][0] == q[0][0]) && (A[i][1] == q[0][1]) && (A[i][2] == q[0][2]))
      break;
  }
  cout << i + 1 << " ";
  for (j = 0; j < N; j++) {
    if ((A[j][0] == q[1][0]) && (A[j][1] == q[1][1]) && (A[j][2] == q[1][2]) &&
        (j != i))
      break;
  }
  cout << j + 1 << "\n";
  return 0;
}
