#include <bits/stdc++.h>
using namespace std;
const int MaxN = 100001;
int A[MaxN], B[MaxN], I[MaxN], Q;
vector<int> C[MaxN];
bool posible(int x) {
  int i, j, p, q, S = 0;
  for (i = 0; i < Q; i++) S += min(x, B[i]);
  return S >= 3 * x;
}
bool cmp(int x, int y) { return (B[x] < B[y]); }
void snowballs(int x) {
  int i, j, p, q;
  for (i = 0; i < Q; i++) B[i] = min(x, B[i]), A[i] = i;
  sort(A, A + Q, cmp);
  for (i = Q - 1, j = 0; i >= 0; i--)
    while (j < 3 * x && B[A[i]]--) C[(j++) % x].push_back(I[A[i]]);
  for (i = 0; i < x; i++) {
    sort(C[i].begin(), C[i].end());
    cout << C[i][2] << " " << C[i][1] << " " << C[i][0] << "\n";
  }
}
int main() {
  int N, i, j, p, q, a, b, m;
  cin >> N;
  for (i = 0; i < N; i++) cin >> A[i];
  sort(A, A + N);
  for (i = q = 0; i < N;) {
    j = A[i], p = 0;
    while (i < N && j == A[i]) i++, p++;
    B[q] = p;
    I[q++] = j;
  }
  a = 0, b = N, Q = q;
  while (a + 1 < b) {
    m = (a + b) / 2;
    if (posible(m))
      a = m;
    else
      b = m;
  }
  cout << a << "\n";
  snowballs(a);
}
