#include <bits/stdc++.h>
using namespace std;
int n, a[100010];
vector<tuple<int, int, int> > ans;
void put(int x, int y, int z) {
  a[x] = !a[x], a[y] = !a[y], a[z] = !a[z];
  ans.push_back(make_tuple(x, y, z));
}
vector<pair<tuple<int, int, int>, int> > smp;
tuple<int, int, int> f[1 << 6], g[1 << 6];
int main() {
  for (int m = 1; m < 10; m++) {
    for (int i = 1; m - i >= 0 && m + i <= 10; i++) {
      int cur = 0;
      if (m - i <= 5) cur |= (1 << m - i);
      if (m <= 5) cur |= (1 << m);
      if (m + i <= 5) cur |= (1 << m + i);
      if (cur) smp.push_back(make_pair(make_tuple(m - i, m, m + i), cur));
    }
  }
  smp.push_back(make_pair(make_tuple(6, 7, 8), 0));
  for (auto x : smp)
    for (auto y : smp) {
      f[x.second ^ y.second] = x.first;
      g[x.second ^ y.second] = y.first;
    }
  cin >> n;
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
  int e = n;
  while (1) {
    while (e && a[e] == 0) e--;
    if (e <= 10) break;
    int cur = 0;
    for (int i = 5; i >= 0; i--) cur = 2 * cur + a[e - i];
    int x, y, z;
    tie(x, y, z) = f[cur];
    put(e - z, e - y, e - x);
    tie(x, y, z) = g[cur];
    put(e - z, e - y, e - x);
    assert(!a[e]);
  }
  e = min(n, 10);
  smp.clear();
  for (int m = 0; m < e; m++) {
    for (int i = 1; m - i >= 0 && m + i < e; i++) {
      int cur = 0;
      cur |= (1 << m - i);
      cur |= (1 << m);
      cur |= (1 << m + i);
      smp.push_back(make_pair(make_tuple(m - i + 1, m + 1, m + i + 1), cur));
    }
  }
  int up = e / 3 + 12;
  int sz = smp.size();
  bool flag = 0;
  int now = 0;
  for (int i = e; i >= 1; i--) now = 2 * now + a[i];
  for (int i = 0; i < (1 << sz); i++) {
    if (__builtin_popcount(i) > up) continue;
    int cur = 0;
    for (int j = 0; j < sz; j++)
      if ((i >> j) & 1) cur ^= smp[j].second;
    if (cur == now) {
      for (int j = 0; j < sz; j++)
        if ((i >> j) & 1)
          put(get<0>(smp[j].first), get<1>(smp[j].first), get<2>(smp[j].first));
      flag = 1;
      break;
    }
  }
  if (!flag)
    puts("NO");
  else {
    puts("YES");
    printf("%d\n", ans.size());
    for (auto x : ans) printf("%d %d %d\n", get<0>(x), get<1>(x), get<2>(x));
  }
}
