#include <bits/stdc++.h>
using namespace std;
int n, h;
priority_queue<pair<int, int>> PQ;
map<int, int> frq;
vector<pair<int, int>> v;
vector<int> ans;
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    scanf("%d", &h);
    frq[h]++;
  }
  map<int, int>::iterator it;
  for (it = frq.begin(); it != frq.end(); ++it) {
    PQ.push(make_pair(it->second, it->first));
  }
  if (PQ.size() < 3) {
    puts("0");
    return 0;
  }
  while (PQ.size() >= 3) {
    for (int i = 0; i < 3; i++) {
      v.push_back(make_pair(PQ.top().second, PQ.top().first));
      PQ.pop();
    }
    sort(v.begin(), v.end());
    for (int i = 2; i >= 0; i--) {
      ans.push_back(v[i].first);
    }
    for (int i = 0; i < 3; i++) {
      if (v[i].second != 1) {
        PQ.push(make_pair(v[i].second - 1, v[i].first));
      }
    }
    v.clear();
  }
  printf("%d\n", ans.size() / 3);
  for (int i = 0, j = 1; i < ans.size(); i++, j++) {
    printf("%d ", ans[i]);
    if (!(j % 3)) {
      printf("\n");
    }
  }
  return 0;
}
