#include <bits/stdc++.h>
using namespace std;
const double eps = 0.000000000000001;
map<int, int> m;
int a[100005];
vector<int> yoo[100005];
int main() {
  int n, i, j;
  scanf("%d", &n);
  ;
  for (i = 0; i < n; ++i) {
    scanf("%d", &a[i]);
    ;
    m[a[i]]++;
  }
  set<pair<int, int>, greater<pair<int, int> > > st;
  for (typeof(m.begin()) it = m.begin(); it != m.end(); it++) {
    st.insert(make_pair(it->second, it->first));
  }
  int ans = 0, p = 0;
  set<pair<int, int> >::iterator it1, temp, it2, it3;
  vector<int> hello;
  while (st.size() >= 3) {
    hello.clear();
    temp = st.begin();
    it1 = temp;
    temp++;
    it2 = temp;
    temp++;
    it3 = temp;
    hello.push_back(it1->second);
    hello.push_back(it2->second);
    hello.push_back(it3->second);
    pair<int, int> lol1 = *it1;
    st.erase(st.find(lol1));
    lol1.first--;
    if (lol1.first) st.insert(lol1);
    lol1 = *it2;
    st.erase(st.find(lol1));
    lol1.first--;
    if (lol1.first) st.insert(lol1);
    lol1 = *it3;
    st.erase(st.find(lol1));
    lol1.first--;
    if (lol1.first) st.insert(lol1);
    sort(hello.begin(), hello.end(), greater<int>());
    yoo[p++] = hello;
  }
  printf("%d\n", p);
  for (i = 0; i < p; ++i) {
    { printf("%d %d %d\n", yoo[i][0], yoo[i][1], yoo[i][2]); }
  }
  return 0;
}
