#include <bits/stdc++.h>
using namespace std;
int n;
bool arr[100000], backup[100000];
vector<pair<int, int>> ans;
void flip(int a, int b, vector<pair<int, int>> &ret = ans) {
  int c = b - a + b;
  arr[a] = !arr[a];
  arr[b] = !arr[b];
  arr[c] = !arr[c];
  ret.push_back({a, b});
}
bool solvesmall(int l, int r) {
  memcpy(backup, arr, sizeof backup);
  vector<pair<int, int>> candidates;
  for (int d = 1; d < 8; d++) {
    for (int i = l; i < r; i++) {
      int a = i, b = i + d, c = i + d + d;
      if (c <= r) candidates.push_back({a, b});
    }
  }
  int score = (1 << 30);
  vector<pair<int, int>> res;
  for (int i = 0; i < (1 << candidates.size()); i++) {
    int cost = __builtin_popcount(i);
    vector<pair<int, int>> thisans;
    for (int j = 0; j < candidates.size(); j++) {
      if (i & (1 << j)) {
        auto [a, b] = candidates[j];
        flip(a, b, thisans);
      }
    }
    bool good = true;
    for (int j = l; j <= r; j++)
      if (arr[j]) good = false;
    if (good && cost < score) {
      score = cost;
      res = thisans;
    }
    memcpy(arr + l, backup + l, (r - l + 1) * sizeof(bool));
  }
  if (score == (1 << 30)) return false;
  for (auto c : res) ans.push_back(c);
  return true;
}
bool what(int l, int r) {
  while (r >= l) {
    if (r - l <= 8)
      return solvesmall(l, r);
    else if (!arr[l])
      l++;
    else if (!arr[r])
      r--;
    else if (arr[l + 1] && arr[l + 2])
      flip(l, l + 1);
    else if (arr[r - 1] && arr[r - 2])
      flip(r - 2, r - 1);
    else if (arr[l + 2])
      flip(l, l + 2);
    else if (arr[r - 2])
      flip(r - 4, r - 2);
    else if ((l + r) % 2 == 0)
      flip(l, (l + r) / 2);
    else if (arr[l + 1])
      flip(l + 1, (l + 1 + r) / 2);
    else if (arr[r - 1])
      flip(l, (l + r - 1) / 2);
    else
      flip(l, (l + r - 3) / 2);
  }
  return true;
}
int main() {
  cin >> n;
  for (int i = 0; i < n; i++) cin >> arr[i];
  if (what(0, n - 1)) {
    cout << "YES" << endl;
    cout << ans.size() << endl;
    for (auto [a, b] : ans)
      cout << a + 1 << " " << b + 1 << " " << b - a + b + 1 << endl;
  } else {
    cout << "NO" << endl;
  }
}
