#include <bits/stdc++.h>
using namespace std;
const double pi = acos(-1.0);
const int INF = (int)1e9;
const long long int prime = 31;
long long int primepow[105];
long long int hash(string s) {
  long long int result = 0;
  for (int i = 0; i < s.size(); ++i) {
    result += (s[i] - 'a' + 1) * primepow[i];
  }
  return result;
}
int main() {
  int n, i, x, z[5];
  map<int, int> m;
  map<int, int>::iterator it;
  set<pair<int, int> > s;
  pair<int, int> a, b, c;
  vector<int> ra, rb, rc;
  cin >> n;
  for (int i = 0; i < n; ++i) {
    cin >> x;
    m[x]++;
  }
  for (it = m.begin(); it != m.end(); it++)
    s.insert(make_pair(-(*it).second, (*it).first));
  while (!s.empty()) {
    a = *s.begin();
    s.erase(s.begin());
    if (s.empty()) break;
    b = *s.begin();
    s.erase(s.begin());
    if (s.empty()) break;
    c = *s.begin();
    s.erase(s.begin());
    ra.push_back(a.second);
    rb.push_back(b.second);
    rc.push_back(c.second);
    if (++a.first < 0) s.insert(a);
    if (++b.first < 0) s.insert(b);
    if (++c.first < 0) s.insert(c);
  }
  cout << ra.size() << endl;
  for (int i = 0; i < ra.size(); ++i) {
    z[0] = ra[i];
    z[1] = rb[i];
    z[2] = rc[i];
    sort(z, z + 3);
    cout << z[2] << " " << z[1] << " " << z[0] << endl;
  }
  return 0;
}
