#include <bits/stdc++.h>
using namespace std;
void printVec(std::vector<int>& vec) {
  std::cout << "";
  for (auto it = vec.begin(); it != vec.end(); ++it) {
    std::cout << *it << " ";
  }
  std::cout << std::endl;
}
void printVec1(std::vector<string>& vec) {
  std::cout << "";
  for (auto it = vec.begin(); it != vec.end(); ++it) {
    std::cout << *it << " ";
  }
  std::cout << std::endl;
}
template <typename T>
void remove(std::vector<T>& vector, unsigned int index) {
  vector.erase(vector.begin() + index);
}
int vector_finder(std::vector<string> vec, string number) {
  auto itr = std::find(vec.begin(), vec.end(), number);
  size_t index = std::distance(vec.begin(), itr);
  if (index != vec.size()) {
    return 1;
  } else {
    return 0;
  }
}
std::vector<std::string> StringSplit(const std::string& str, char sep) {
  std::vector<std::string> v;
  std::stringstream ss(str);
  std::string buffer;
  while (std::getline(ss, buffer, sep)) {
    v.push_back(buffer);
  }
  return v;
}
int main() {
  int n;
  cin >> n;
  vector<int64_t> a(n);
  int count4 = 0, count2 = 0;
  for (int i = 0; i < n; i++) {
    cin >> a[i];
    if (a[i] % 4 == 0)
      count4++;
    else if (a[i] % 2 == 0)
      count2++;
  }
  int remain;
  remain = n - (count4 + 1) - count4;
  if (count2 < remain || (remain == 1 && count2 <= 1) ||
      (count2 == count4 && count4 == remain))
    cout << "No";
  else
    cout << "Yes";
  cout << count2 << ":" << count4 << ":" << remain;
  return 0;
}
