#include <algorithm>
    #include <iostream>
 
    int main () {
      const std::size_t board_size = 16;
      char board [board_size] = {
        0, 2, 0, 4,
        2, 4, 8, 2,
        0, 0, 8, 4,
        2, 0, 0, 2
      };
 
      // Initialize a zero-filled vector of the appropriate size.
      std::vector<int> zeroes(board_size);
 
      // Fill the vector with index values (0 through board_size - 1).
      std::iota(zeroes.begin(), zeroes.end(), 0);
 
      // Remove the index values that do not correspond to zero elements in the board.
      zeroes.erase(std::remove_if(zeroes.begin(), zeroes.end(), [&board] (int i) {
        return board[i] != 0;
      }), zeroes.end());
 
      // Output the resulting contents of the vector.
      for (int i : zeroes) {
        std::cout << i << std::endl;
      }
    }
				ICAgICNpbmNsdWRlIDxhbGdvcml0aG0+CiAgICAjaW5jbHVkZSA8aW9zdHJlYW0+CgogICAgaW50IG1haW4gKCkgewogICAgICBjb25zdCBzdGQ6OnNpemVfdCBib2FyZF9zaXplID0gMTY7CiAgICAgIGNoYXIgYm9hcmQgW2JvYXJkX3NpemVdID0gewogICAgICAgIDAsIDIsIDAsIDQsCiAgICAgICAgMiwgNCwgOCwgMiwKICAgICAgICAwLCAwLCA4LCA0LAogICAgICAgIDIsIDAsIDAsIDIKICAgICAgfTsKCiAgICAgIC8vIEluaXRpYWxpemUgYSB6ZXJvLWZpbGxlZCB2ZWN0b3Igb2YgdGhlIGFwcHJvcHJpYXRlIHNpemUuCiAgICAgIHN0ZDo6dmVjdG9yPGludD4gemVyb2VzKGJvYXJkX3NpemUpOwoKICAgICAgLy8gRmlsbCB0aGUgdmVjdG9yIHdpdGggaW5kZXggdmFsdWVzICgwIHRocm91Z2ggYm9hcmRfc2l6ZSAtIDEpLgogICAgICBzdGQ6OmlvdGEoemVyb2VzLmJlZ2luKCksIHplcm9lcy5lbmQoKSwgMCk7CgogICAgICAvLyBSZW1vdmUgdGhlIGluZGV4IHZhbHVlcyB0aGF0IGRvIG5vdCBjb3JyZXNwb25kIHRvIHplcm8gZWxlbWVudHMgaW4gdGhlIGJvYXJkLgogICAgICB6ZXJvZXMuZXJhc2Uoc3RkOjpyZW1vdmVfaWYoemVyb2VzLmJlZ2luKCksIHplcm9lcy5lbmQoKSwgWyZib2FyZF0gKGludCBpKSB7CiAgICAgICAgcmV0dXJuIGJvYXJkW2ldICE9IDA7CiAgICAgIH0pLCB6ZXJvZXMuZW5kKCkpOwoKICAgICAgLy8gT3V0cHV0IHRoZSByZXN1bHRpbmcgY29udGVudHMgb2YgdGhlIHZlY3Rvci4KICAgICAgZm9yIChpbnQgaSA6IHplcm9lcykgewogICAgICAgIHN0ZDo6Y291dCA8PCBpIDw8IHN0ZDo6ZW5kbDsKICAgICAgfQogICAgfQ==