#include <bits/stdc++.h>
using namespace std;
const int MAX = 100005;
int out[MAX][3];
map<int, int> mp;
set<pair<int, int> > balls;
int n;
int main() {
  int ans = 0;
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    int x;
    scanf("%d", &x);
    mp[x]++;
  }
  for (auto it : mp) balls.insert(make_pair(-it.second, it.first));
  while (balls.size() >= 3) {
    set<pair<int, int> >::iterator it = balls.begin();
    pair<int, int> a = *it++;
    pair<int, int> b = *it++;
    pair<int, int> c = *it;
    if (c.second < b.second) swap(b, c);
    if (b.second < a.second) swap(a, b);
    if (c.second < b.second) swap(b, c);
    out[ans][0] = c.second;
    out[ans][1] = b.second;
    out[ans++][2] = a.second;
    balls.erase(a);
    balls.erase(b);
    balls.erase(c);
    if (a.first + 1 != 0) {
      a.first++;
      balls.insert(a);
    }
    if (b.first + 1 != 0) {
      b.first++;
      balls.insert(b);
    }
    if (c.first + 1 != 0) {
      c.first++;
      balls.insert(c);
    }
  }
  printf("%d\n", ans);
  for (int i = 0; i < ans; i++) {
    printf("%d %d %d\n", out[i][0], out[i][1], out[i][2]);
  }
  return 0;
}
