#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int ans[N][5], q[5], n, a[N], b[N], c[N], times[N], cnt;
priority_queue<pair<int, int> > Q;
int main() {
  cin >> n;
  for (int i = 1; i <= n; ++i) cin >> a[i], b[i] = a[i];
  sort(b + 1, b + 1 + n);
  int size = unique(b + 1, b + 1 + n) - b - 1;
  for (int i = 1; i <= n; ++i)
    c[i] = lower_bound(b + 1, b + 1 + size, a[i]) - b;
  for (int i = 1; i <= n; ++i) ++times[c[i]];
  for (int i = 1; i <= size; ++i) Q.push(make_pair(times[i], i));
  while (Q.size() >= 3) {
    for (int i = 1; i <= 3; ++i) q[i] = Q.top().second, Q.pop();
    ++cnt;
    for (int i = 1; i <= 3; ++i) ans[cnt][i] = b[q[i]];
    sort(ans[cnt] + 1, ans[cnt] + 4);
    for (int i = 1; i <= 3; ++i) {
      --times[q[i]];
      if (times[q[i]] > 0) Q.push(make_pair(times[q[i]], q[i]));
    }
  }
  cout << cnt << endl;
  for (int i = 1; i <= cnt; ++i) {
    for (int j = 3; j; --j) cout << ans[i][j] << ' ';
    cout << endl;
  }
  return 0;
}
