#include <bits/stdc++.h>
#pragma GCC optimize("O3")
using namespace std;
const int bs = 1000000007;
const int N = 600031;
int n, ar[N];
int x;
vector<vector<int> > ans;
vector<int> make_move(int a, int b, int c) {
  vector<int> ret;
  ret.push_back(a);
  ret.push_back(b);
  ret.push_back(c);
  return ret;
}
void show_it(vector<int> v) {
  for (int i = 0; i < v.size(); i++) {
    if (i) cout << " ";
    cout << v[i];
  }
  cout << endl;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin >> n;
  for (int i = 1; i <= n; i++) {
    cin >> ar[i];
    x ^= ar[i];
  }
  if (n % 2 == 0 && x != 0) {
    cout << "NO" << endl;
    return 0;
  }
  for (int i = 2; i + 1 <= n; i += 2) {
    ans.push_back(make_move(1, i, i + 1));
  }
  for (int i = 2; i + 1 <= n; i += 2) {
    ans.push_back(make_move(1, i, i + 1));
  }
  cout << "YES" << endl;
  cout << ans.size() << endl;
  for (int i = 0; i < ans.size(); i++) {
    show_it(ans[i]);
  }
  return 0;
}
