#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 9;
int n;
vector<pair<int, pair<int, int>>> ans;
vector<int> all;
map<int, int> cnt;
set<pair<int, int>> s;
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin >> n;
  for (int i = 0; i < n; i++) {
    int x;
    cin >> x;
    cnt[x]++;
    if (cnt[x] == 1) {
      all.push_back(x);
    }
  }
  for (int i = 0; i < all.size(); i++) {
    s.insert({cnt[all[i]], all[i]});
  }
  while ((int)s.size() >= 3) {
    auto p = *s.rbegin();
    int f1 = p.first;
    int n1 = p.second;
    s.erase(s.find(p));
    p = *s.rbegin();
    int f2 = p.first;
    int n2 = p.second;
    s.erase(s.find(p));
    p = *s.rbegin();
    int f3 = p.first;
    int n3 = p.second;
    s.erase(s.find(p));
    vector<int> t;
    t.push_back(n1);
    t.push_back(n2);
    t.push_back(n3);
    sort(t.begin(), t.end());
    ans.push_back({t[0], {t[1], t[2]}});
    if (f1 - 1 != 0) s.insert({f1 - 1, n1});
    if (f2 - 1 != 0) s.insert({f2 - 1, n2});
    if (f3 - 1 != 0) s.insert({f3 - 1, n3});
  }
  cout << ans.size() << '\n';
  for (auto x : ans) {
    cout << x.second.second << " " << x.second.first << " " << x.first << '\n';
  }
}
