#include <iostream>
#include <cassert>
#include "circle.h"
#include "Factory.h"

using namespace std;

int main() {
    vector<string> names;
    circle c;
    names = c.getNames();
    assert(names.size() == 20);

    names = c.playGame(20, 1);
    vector<string> expected {
        "Josephus",
        "A", "B", "C", "D", "E", "F", "G", "H",
        "I", "J", "K", "L", "M", "N", "O", "P",
        "Q", "R", "S", };
    assert(names == expected);
    assert(c.reportSafeIndex(20, 1) == 19);

    names = c.playGame(10, 3);
    vector<string> expected2 {
        "B","E","H","A","F","Josephus","G","D","I","C",
    };
    assert(names == expected2);
    assert(c.reportSafeIndex(10, 3) == 3);

    names = c.playGame(10, 6);
    vector<string> expected3 {
        "E","A","H","F","D","G",
            "Josephus","I","C","B",
    };
    assert(names == expected3);

    // test 3 tests:
    assert(c.reportSafeIndex(10, 6) == 2);
    assert(c.reportSafeIndex(0, -5) == -1);
    assert(c.reportSafeIndex(0, -4) == -1);
    assert(c.reportSafeIndex(0, -3) == -1);
    assert(c.reportSafeIndex(0, -2) == -1);
    assert(c.reportSafeIndex(0, -1) == -1);
    assert(c.reportSafeIndex(0, 0) == -1);
    assert(c.reportSafeIndex(0, 1) == -1);
    assert(c.reportSafeIndex(0, 2) == -1);
    assert(c.reportSafeIndex(0, 3) == -1);
    assert(c.reportSafeIndex(0, 4) == -1);
    assert(c.reportSafeIndex(0, 5) == -1);
    assert(c.reportSafeIndex(0, 6) == -1);
    assert(c.reportSafeIndex(0, 7) == -1);
    assert(c.reportSafeIndex(0, 8) == -1);
    assert(c.reportSafeIndex(0, 9) == -1);
    assert(c.reportSafeIndex(0, 10) == -1);
    assert(c.reportSafeIndex(0, 11) == -1);
    assert(c.reportSafeIndex(0, 12) == -1);
    assert(c.reportSafeIndex(0, 13) == -1);
    assert(c.reportSafeIndex(0, 14) == -1);
    assert(c.reportSafeIndex(0, 15) == -1);
    assert(c.reportSafeIndex(0, 16) == -1);
    assert(c.reportSafeIndex(0, 17) == -1);
    assert(c.reportSafeIndex(0, 18) == -1);
    assert(c.reportSafeIndex(0, 19) == -1);
    assert(c.reportSafeIndex(0, 20) == -1);
    assert(c.reportSafeIndex(0, 21) == -1);
    assert(c.reportSafeIndex(0, 22) == -1);
    assert(c.reportSafeIndex(0, 23) == -1);
    assert(c.reportSafeIndex(0, 24) == -1);
    assert(c.reportSafeIndex(0, 25) == -1);
    assert(c.reportSafeIndex(0, 26) == -1);
    assert(c.reportSafeIndex(0, 27) == -1);
    assert(c.reportSafeIndex(0, 28) == -1);
    assert(c.reportSafeIndex(0, 29) == -1);
    assert(c.reportSafeIndex(0, 30) == -1);
    assert(c.reportSafeIndex(0, 31) == -1);
    assert(c.reportSafeIndex(0, 32) == -1);
    assert(c.reportSafeIndex(0, 33) == -1);
    assert(c.reportSafeIndex(0, 34) == -1);
    assert(c.reportSafeIndex(0, 35) == -1);
    assert(c.reportSafeIndex(0, 36) == -1);
    assert(c.reportSafeIndex(0, 37) == -1);
    assert(c.reportSafeIndex(0, 38) == -1);
    assert(c.reportSafeIndex(0, 39) == -1);
    assert(c.reportSafeIndex(0, 40) == -1);
    assert(c.reportSafeIndex(0, 41) == -1);
    assert(c.reportSafeIndex(1, -5) == -1);
    assert(c.reportSafeIndex(1, -4) == -1);
    assert(c.reportSafeIndex(1, -3) == -1);
    assert(c.reportSafeIndex(1, -2) == -1);
    assert(c.reportSafeIndex(1, -1) == -1);
    assert(c.reportSafeIndex(1, 0) == -1);
    assert(c.reportSafeIndex(1, 1) == -1);
    assert(c.reportSafeIndex(1, 2) == -1);
    assert(c.reportSafeIndex(1, 3) == -1);
    assert(c.reportSafeIndex(1, 4) == -1);
    assert(c.reportSafeIndex(1, 5) == -1);
    assert(c.reportSafeIndex(1, 6) == -1);
    assert(c.reportSafeIndex(1, 7) == -1);
    assert(c.reportSafeIndex(1, 8) == -1);
    assert(c.reportSafeIndex(1, 9) == -1);
    assert(c.reportSafeIndex(1, 10) == -1);
    assert(c.reportSafeIndex(1, 11) == -1);
    assert(c.reportSafeIndex(1, 12) == -1);
    assert(c.reportSafeIndex(1, 13) == -1);
    assert(c.reportSafeIndex(1, 14) == -1);
    assert(c.reportSafeIndex(1, 15) == -1);
    assert(c.reportSafeIndex(1, 16) == -1);
    assert(c.reportSafeIndex(1, 17) == -1);
    assert(c.reportSafeIndex(1, 18) == -1);
    assert(c.reportSafeIndex(1, 19) == -1);
    assert(c.reportSafeIndex(1, 20) == -1);
    assert(c.reportSafeIndex(1, 21) == -1);
    assert(c.reportSafeIndex(1, 22) == -1);
    assert(c.reportSafeIndex(1, 23) == -1);
    assert(c.reportSafeIndex(1, 24) == -1);
    assert(c.reportSafeIndex(1, 25) == -1);
    assert(c.reportSafeIndex(1, 26) == -1);
    assert(c.reportSafeIndex(1, 27) == -1);
    assert(c.reportSafeIndex(1, 28) == -1);
    assert(c.reportSafeIndex(1, 29) == -1);
    assert(c.reportSafeIndex(1, 30) == -1);
    assert(c.reportSafeIndex(1, 31) == -1);
    assert(c.reportSafeIndex(1, 32) == -1);
    assert(c.reportSafeIndex(1, 33) == -1);
    assert(c.reportSafeIndex(1, 34) == -1);
    assert(c.reportSafeIndex(1, 35) == -1);
    assert(c.reportSafeIndex(1, 36) == -1);
    assert(c.reportSafeIndex(1, 37) == -1);
    assert(c.reportSafeIndex(1, 38) == -1);
    assert(c.reportSafeIndex(1, 39) == -1);
    assert(c.reportSafeIndex(1, 40) == -1);
    assert(c.reportSafeIndex(1, 41) == -1);
    assert(c.reportSafeIndex(2, -5) == -1);
    assert(c.reportSafeIndex(2, -4) == -1);
    assert(c.reportSafeIndex(2, -3) == -1);
    assert(c.reportSafeIndex(2, -2) == -1);
    assert(c.reportSafeIndex(2, -1) == -1);
    assert(c.reportSafeIndex(2, 0) == -1);
    assert(c.reportSafeIndex(2, 1) == -1);
    assert(c.reportSafeIndex(2, 2) == -1);
    assert(c.reportSafeIndex(2, 3) == -1);
    assert(c.reportSafeIndex(2, 4) == -1);
    assert(c.reportSafeIndex(2, 5) == -1);
    assert(c.reportSafeIndex(2, 6) == -1);
    assert(c.reportSafeIndex(2, 7) == -1);
    assert(c.reportSafeIndex(2, 8) == -1);
    assert(c.reportSafeIndex(2, 9) == -1);
    assert(c.reportSafeIndex(2, 10) == -1);
    assert(c.reportSafeIndex(2, 11) == -1);
    assert(c.reportSafeIndex(2, 12) == -1);
    assert(c.reportSafeIndex(2, 13) == -1);
    assert(c.reportSafeIndex(2, 14) == -1);
    assert(c.reportSafeIndex(2, 15) == -1);
    assert(c.reportSafeIndex(2, 16) == -1);
    assert(c.reportSafeIndex(2, 17) == -1);
    assert(c.reportSafeIndex(2, 18) == -1);
    assert(c.reportSafeIndex(2, 19) == -1);
    assert(c.reportSafeIndex(2, 20) == -1);
    assert(c.reportSafeIndex(2, 21) == -1);
    assert(c.reportSafeIndex(2, 22) == -1);
    assert(c.reportSafeIndex(2, 23) == -1);
    assert(c.reportSafeIndex(2, 24) == -1);
    assert(c.reportSafeIndex(2, 25) == -1);
    assert(c.reportSafeIndex(2, 26) == -1);
    assert(c.reportSafeIndex(2, 27) == -1);
    assert(c.reportSafeIndex(2, 28) == -1);
    assert(c.reportSafeIndex(2, 29) == -1);
    assert(c.reportSafeIndex(2, 30) == -1);
    assert(c.reportSafeIndex(2, 31) == -1);
    assert(c.reportSafeIndex(2, 32) == -1);
    assert(c.reportSafeIndex(2, 33) == -1);
    assert(c.reportSafeIndex(2, 34) == -1);
    assert(c.reportSafeIndex(2, 35) == -1);
    assert(c.reportSafeIndex(2, 36) == -1);
    assert(c.reportSafeIndex(2, 37) == -1);
    assert(c.reportSafeIndex(2, 38) == -1);
    assert(c.reportSafeIndex(2, 39) == -1);
    assert(c.reportSafeIndex(2, 40) == -1);
    assert(c.reportSafeIndex(2, 41) == -1);
    assert(c.reportSafeIndex(3, -5) == -1);
    assert(c.reportSafeIndex(3, -4) == -1);
    assert(c.reportSafeIndex(3, -3) == -1);
    assert(c.reportSafeIndex(3, -2) == -1);
    assert(c.reportSafeIndex(3, -1) == -1);
    assert(c.reportSafeIndex(3, 0) == -1);
    assert(c.reportSafeIndex(3, 1) == -1);
    assert(c.reportSafeIndex(3, 2) == -1);
    assert(c.reportSafeIndex(3, 3) == -1);
    assert(c.reportSafeIndex(3, 4) == -1);
    assert(c.reportSafeIndex(3, 5) == -1);
    assert(c.reportSafeIndex(3, 6) == -1);
    assert(c.reportSafeIndex(3, 7) == -1);
    assert(c.reportSafeIndex(3, 8) == -1);
    assert(c.reportSafeIndex(3, 9) == -1);
    assert(c.reportSafeIndex(3, 10) == -1);
    assert(c.reportSafeIndex(3, 11) == -1);
    assert(c.reportSafeIndex(3, 12) == -1);
    assert(c.reportSafeIndex(3, 13) == -1);
    assert(c.reportSafeIndex(3, 14) == -1);
    assert(c.reportSafeIndex(3, 15) == -1);
    assert(c.reportSafeIndex(3, 16) == -1);
    assert(c.reportSafeIndex(3, 17) == -1);
    assert(c.reportSafeIndex(3, 18) == -1);
    assert(c.reportSafeIndex(3, 19) == -1);
    assert(c.reportSafeIndex(3, 20) == -1);
    assert(c.reportSafeIndex(3, 21) == -1);
    assert(c.reportSafeIndex(3, 22) == -1);
    assert(c.reportSafeIndex(3, 23) == -1);
    assert(c.reportSafeIndex(3, 24) == -1);
    assert(c.reportSafeIndex(3, 25) == -1);
    assert(c.reportSafeIndex(3, 26) == -1);
    assert(c.reportSafeIndex(3, 27) == -1);
    assert(c.reportSafeIndex(3, 28) == -1);
    assert(c.reportSafeIndex(3, 29) == -1);
    assert(c.reportSafeIndex(3, 30) == -1);
    assert(c.reportSafeIndex(3, 31) == -1);
    assert(c.reportSafeIndex(3, 32) == -1);
    assert(c.reportSafeIndex(3, 33) == -1);
    assert(c.reportSafeIndex(3, 34) == -1);
    assert(c.reportSafeIndex(3, 35) == -1);
    assert(c.reportSafeIndex(3, 36) == -1);
    assert(c.reportSafeIndex(3, 37) == -1);
    assert(c.reportSafeIndex(3, 38) == -1);
    assert(c.reportSafeIndex(3, 39) == -1);
    assert(c.reportSafeIndex(3, 40) == -1);
    assert(c.reportSafeIndex(3, 41) == -1);
    assert(c.reportSafeIndex(4, -5) == -1);
    assert(c.reportSafeIndex(4, -4) == -1);
    assert(c.reportSafeIndex(4, -3) == -1);
    assert(c.reportSafeIndex(4, -2) == -1);
    assert(c.reportSafeIndex(4, -1) == -1);
    assert(c.reportSafeIndex(4, 0) == -1);
    assert(c.reportSafeIndex(4, 1) == -1);
    assert(c.reportSafeIndex(4, 2) == -1);
    assert(c.reportSafeIndex(4, 3) == -1);
    assert(c.reportSafeIndex(4, 4) == -1);
    assert(c.reportSafeIndex(4, 5) == -1);
    assert(c.reportSafeIndex(4, 6) == -1);
    assert(c.reportSafeIndex(4, 7) == -1);
    assert(c.reportSafeIndex(4, 8) == -1);
    assert(c.reportSafeIndex(4, 9) == -1);
    assert(c.reportSafeIndex(4, 10) == -1);
    assert(c.reportSafeIndex(4, 11) == -1);
    assert(c.reportSafeIndex(4, 12) == -1);
    assert(c.reportSafeIndex(4, 13) == -1);
    assert(c.reportSafeIndex(4, 14) == -1);
    assert(c.reportSafeIndex(4, 15) == -1);
    assert(c.reportSafeIndex(4, 16) == -1);
    assert(c.reportSafeIndex(4, 17) == -1);
    assert(c.reportSafeIndex(4, 18) == -1);
    assert(c.reportSafeIndex(4, 19) == -1);
    assert(c.reportSafeIndex(4, 20) == -1);
    assert(c.reportSafeIndex(4, 21) == -1);
    assert(c.reportSafeIndex(4, 22) == -1);
    assert(c.reportSafeIndex(4, 23) == -1);
    assert(c.reportSafeIndex(4, 24) == -1);
    assert(c.reportSafeIndex(4, 25) == -1);
    assert(c.reportSafeIndex(4, 26) == -1);
    assert(c.reportSafeIndex(4, 27) == -1);
    assert(c.reportSafeIndex(4, 28) == -1);
    assert(c.reportSafeIndex(4, 29) == -1);
    assert(c.reportSafeIndex(4, 30) == -1);
    assert(c.reportSafeIndex(4, 31) == -1);
    assert(c.reportSafeIndex(4, 32) == -1);
    assert(c.reportSafeIndex(4, 33) == -1);
    assert(c.reportSafeIndex(4, 34) == -1);
    assert(c.reportSafeIndex(4, 35) == -1);
    assert(c.reportSafeIndex(4, 36) == -1);
    assert(c.reportSafeIndex(4, 37) == -1);
    assert(c.reportSafeIndex(4, 38) == -1);
    assert(c.reportSafeIndex(4, 39) == -1);
    assert(c.reportSafeIndex(4, 40) == -1);
    assert(c.reportSafeIndex(4, 41) == -1);
    assert(c.reportSafeIndex(5, -5) == -1);
    assert(c.reportSafeIndex(5, -4) == -1);
    assert(c.reportSafeIndex(5, -3) == -1);
    assert(c.reportSafeIndex(5, -2) == -1);
    assert(c.reportSafeIndex(5, -1) == -1);
    assert(c.reportSafeIndex(5, 0) == -1);
    assert(c.reportSafeIndex(5, 1) == -1);
    assert(c.reportSafeIndex(5, 2) == -1);
    assert(c.reportSafeIndex(5, 3) == -1);
    assert(c.reportSafeIndex(5, 4) == -1);
    assert(c.reportSafeIndex(5, 5) == -1);
    assert(c.reportSafeIndex(5, 6) == -1);
    assert(c.reportSafeIndex(5, 7) == -1);
    assert(c.reportSafeIndex(5, 8) == -1);
    assert(c.reportSafeIndex(5, 9) == -1);
    assert(c.reportSafeIndex(5, 10) == -1);
    assert(c.reportSafeIndex(5, 11) == -1);
    assert(c.reportSafeIndex(5, 12) == -1);
    assert(c.reportSafeIndex(5, 13) == -1);
    assert(c.reportSafeIndex(5, 14) == -1);
    assert(c.reportSafeIndex(5, 15) == -1);
    assert(c.reportSafeIndex(5, 16) == -1);
    assert(c.reportSafeIndex(5, 17) == -1);
    assert(c.reportSafeIndex(5, 18) == -1);
    assert(c.reportSafeIndex(5, 19) == -1);
    assert(c.reportSafeIndex(5, 20) == -1);
    assert(c.reportSafeIndex(5, 21) == -1);
    assert(c.reportSafeIndex(5, 22) == -1);
    assert(c.reportSafeIndex(5, 23) == -1);
    assert(c.reportSafeIndex(5, 24) == -1);
    assert(c.reportSafeIndex(5, 25) == -1);
    assert(c.reportSafeIndex(5, 26) == -1);
    assert(c.reportSafeIndex(5, 27) == -1);
    assert(c.reportSafeIndex(5, 28) == -1);
    assert(c.reportSafeIndex(5, 29) == -1);
    assert(c.reportSafeIndex(5, 30) == -1);
    assert(c.reportSafeIndex(5, 31) == -1);
    assert(c.reportSafeIndex(5, 32) == -1);
    assert(c.reportSafeIndex(5, 33) == -1);
    assert(c.reportSafeIndex(5, 34) == -1);
    assert(c.reportSafeIndex(5, 35) == -1);
    assert(c.reportSafeIndex(5, 36) == -1);
    assert(c.reportSafeIndex(5, 37) == -1);
    assert(c.reportSafeIndex(5, 38) == -1);
    assert(c.reportSafeIndex(5, 39) == -1);
    assert(c.reportSafeIndex(5, 40) == -1);
    assert(c.reportSafeIndex(5, 41) == -1);
    assert(c.reportSafeIndex(6, -5) == -1);
    assert(c.reportSafeIndex(6, -4) == -1);
    assert(c.reportSafeIndex(6, -3) == -1);
    assert(c.reportSafeIndex(6, -2) == -1);
    assert(c.reportSafeIndex(6, -1) == -1);
    assert(c.reportSafeIndex(6, 0) == -1);
    assert(c.reportSafeIndex(6, 1) == -1);
    assert(c.reportSafeIndex(6, 2) == -1);
    assert(c.reportSafeIndex(6, 3) == -1);
    assert(c.reportSafeIndex(6, 4) == -1);
    assert(c.reportSafeIndex(6, 5) == -1);
    assert(c.reportSafeIndex(6, 6) == -1);
    assert(c.reportSafeIndex(6, 7) == -1);
    assert(c.reportSafeIndex(6, 8) == -1);
    assert(c.reportSafeIndex(6, 9) == -1);
    assert(c.reportSafeIndex(6, 10) == -1);
    assert(c.reportSafeIndex(6, 11) == -1);
    assert(c.reportSafeIndex(6, 12) == -1);
    assert(c.reportSafeIndex(6, 13) == -1);
    assert(c.reportSafeIndex(6, 14) == -1);
    assert(c.reportSafeIndex(6, 15) == -1);
    assert(c.reportSafeIndex(6, 16) == -1);
    assert(c.reportSafeIndex(6, 17) == -1);
    assert(c.reportSafeIndex(6, 18) == -1);
    assert(c.reportSafeIndex(6, 19) == -1);
    assert(c.reportSafeIndex(6, 20) == -1);
    assert(c.reportSafeIndex(6, 21) == -1);
    assert(c.reportSafeIndex(6, 22) == -1);
    assert(c.reportSafeIndex(6, 23) == -1);
    assert(c.reportSafeIndex(6, 24) == -1);
    assert(c.reportSafeIndex(6, 25) == -1);
    assert(c.reportSafeIndex(6, 26) == -1);
    assert(c.reportSafeIndex(6, 27) == -1);
    assert(c.reportSafeIndex(6, 28) == -1);
    assert(c.reportSafeIndex(6, 29) == -1);
    assert(c.reportSafeIndex(6, 30) == -1);
    assert(c.reportSafeIndex(6, 31) == -1);
    assert(c.reportSafeIndex(6, 32) == -1);
    assert(c.reportSafeIndex(6, 33) == -1);
    assert(c.reportSafeIndex(6, 34) == -1);
    assert(c.reportSafeIndex(6, 35) == -1);
    assert(c.reportSafeIndex(6, 36) == -1);
    assert(c.reportSafeIndex(6, 37) == -1);
    assert(c.reportSafeIndex(6, 38) == -1);
    assert(c.reportSafeIndex(6, 39) == -1);
    assert(c.reportSafeIndex(6, 40) == -1);
    assert(c.reportSafeIndex(6, 41) == -1);
    assert(c.reportSafeIndex(7, -5) == -1);
    assert(c.reportSafeIndex(7, -4) == -1);
    assert(c.reportSafeIndex(7, -3) == -1);
    assert(c.reportSafeIndex(7, -2) == -1);
    assert(c.reportSafeIndex(7, -1) == -1);
    assert(c.reportSafeIndex(7, 0) == -1);
    assert(c.reportSafeIndex(7, 1) == -1);
    assert(c.reportSafeIndex(7, 2) == -1);
    assert(c.reportSafeIndex(7, 3) == -1);
    assert(c.reportSafeIndex(7, 4) == -1);
    assert(c.reportSafeIndex(7, 5) == -1);
    assert(c.reportSafeIndex(7, 6) == -1);
    assert(c.reportSafeIndex(7, 7) == -1);
    assert(c.reportSafeIndex(7, 8) == -1);
    assert(c.reportSafeIndex(7, 9) == -1);
    assert(c.reportSafeIndex(7, 10) == -1);
    assert(c.reportSafeIndex(7, 11) == -1);
    assert(c.reportSafeIndex(7, 12) == -1);
    assert(c.reportSafeIndex(7, 13) == -1);
    assert(c.reportSafeIndex(7, 14) == -1);
    assert(c.reportSafeIndex(7, 15) == -1);
    assert(c.reportSafeIndex(7, 16) == -1);
    assert(c.reportSafeIndex(7, 17) == -1);
    assert(c.reportSafeIndex(7, 18) == -1);
    assert(c.reportSafeIndex(7, 19) == -1);
    assert(c.reportSafeIndex(7, 20) == -1);
    assert(c.reportSafeIndex(7, 21) == -1);
    assert(c.reportSafeIndex(7, 22) == -1);
    assert(c.reportSafeIndex(7, 23) == -1);
    assert(c.reportSafeIndex(7, 24) == -1);
    assert(c.reportSafeIndex(7, 25) == -1);
    assert(c.reportSafeIndex(7, 26) == -1);
    assert(c.reportSafeIndex(7, 27) == -1);
    assert(c.reportSafeIndex(7, 28) == -1);
    assert(c.reportSafeIndex(7, 29) == -1);
    assert(c.reportSafeIndex(7, 30) == -1);
    assert(c.reportSafeIndex(7, 31) == -1);
    assert(c.reportSafeIndex(7, 32) == -1);
    assert(c.reportSafeIndex(7, 33) == -1);
    assert(c.reportSafeIndex(7, 34) == -1);
    assert(c.reportSafeIndex(7, 35) == -1);
    assert(c.reportSafeIndex(7, 36) == -1);
    assert(c.reportSafeIndex(7, 37) == -1);
    assert(c.reportSafeIndex(7, 38) == -1);
    assert(c.reportSafeIndex(7, 39) == -1);
    assert(c.reportSafeIndex(7, 40) == -1);
    assert(c.reportSafeIndex(7, 41) == -1);
    assert(c.reportSafeIndex(8, -5) == -1);
    assert(c.reportSafeIndex(8, -4) == -1);
    assert(c.reportSafeIndex(8, -3) == -1);
    assert(c.reportSafeIndex(8, -2) == -1);
    assert(c.reportSafeIndex(8, -1) == -1);
    assert(c.reportSafeIndex(8, 0) == -1);
    assert(c.reportSafeIndex(8, 1) == -1);
    assert(c.reportSafeIndex(8, 2) == -1);
    assert(c.reportSafeIndex(8, 3) == -1);
    assert(c.reportSafeIndex(8, 4) == -1);
    assert(c.reportSafeIndex(8, 5) == -1);
    assert(c.reportSafeIndex(8, 6) == -1);
    assert(c.reportSafeIndex(8, 7) == -1);
    assert(c.reportSafeIndex(8, 8) == -1);
    assert(c.reportSafeIndex(8, 9) == -1);
    assert(c.reportSafeIndex(8, 10) == -1);
    assert(c.reportSafeIndex(8, 11) == -1);
    assert(c.reportSafeIndex(8, 12) == -1);
    assert(c.reportSafeIndex(8, 13) == -1);
    assert(c.reportSafeIndex(8, 14) == -1);
    assert(c.reportSafeIndex(8, 15) == -1);
    assert(c.reportSafeIndex(8, 16) == -1);
    assert(c.reportSafeIndex(8, 17) == -1);
    assert(c.reportSafeIndex(8, 18) == -1);
    assert(c.reportSafeIndex(8, 19) == -1);
    assert(c.reportSafeIndex(8, 20) == -1);
    assert(c.reportSafeIndex(8, 21) == -1);
    assert(c.reportSafeIndex(8, 22) == -1);
    assert(c.reportSafeIndex(8, 23) == -1);
    assert(c.reportSafeIndex(8, 24) == -1);
    assert(c.reportSafeIndex(8, 25) == -1);
    assert(c.reportSafeIndex(8, 26) == -1);
    assert(c.reportSafeIndex(8, 27) == -1);
    assert(c.reportSafeIndex(8, 28) == -1);
    assert(c.reportSafeIndex(8, 29) == -1);
    assert(c.reportSafeIndex(8, 30) == -1);
    assert(c.reportSafeIndex(8, 31) == -1);
    assert(c.reportSafeIndex(8, 32) == -1);
    assert(c.reportSafeIndex(8, 33) == -1);
    assert(c.reportSafeIndex(8, 34) == -1);
    assert(c.reportSafeIndex(8, 35) == -1);
    assert(c.reportSafeIndex(8, 36) == -1);
    assert(c.reportSafeIndex(8, 37) == -1);
    assert(c.reportSafeIndex(8, 38) == -1);
    assert(c.reportSafeIndex(8, 39) == -1);
    assert(c.reportSafeIndex(8, 40) == -1);
    assert(c.reportSafeIndex(8, 41) == -1);
    assert(c.reportSafeIndex(9, -5) == -1);
    assert(c.reportSafeIndex(9, -4) == -1);
    assert(c.reportSafeIndex(9, -3) == -1);
    assert(c.reportSafeIndex(9, -2) == -1);
    assert(c.reportSafeIndex(9, -1) == -1);
    assert(c.reportSafeIndex(9, 0) == -1);
    assert(c.reportSafeIndex(9, 1) == -1);
    assert(c.reportSafeIndex(9, 2) == -1);
    assert(c.reportSafeIndex(9, 3) == -1);
    assert(c.reportSafeIndex(9, 4) == -1);
    assert(c.reportSafeIndex(9, 5) == -1);
    assert(c.reportSafeIndex(9, 6) == -1);
    assert(c.reportSafeIndex(9, 7) == -1);
    assert(c.reportSafeIndex(9, 8) == -1);
    assert(c.reportSafeIndex(9, 9) == -1);
    assert(c.reportSafeIndex(9, 10) == -1);
    assert(c.reportSafeIndex(9, 11) == -1);
    assert(c.reportSafeIndex(9, 12) == -1);
    assert(c.reportSafeIndex(9, 13) == -1);
    assert(c.reportSafeIndex(9, 14) == -1);
    assert(c.reportSafeIndex(9, 15) == -1);
    assert(c.reportSafeIndex(9, 16) == -1);
    assert(c.reportSafeIndex(9, 17) == -1);
    assert(c.reportSafeIndex(9, 18) == -1);
    assert(c.reportSafeIndex(9, 19) == -1);
    assert(c.reportSafeIndex(9, 20) == -1);
    assert(c.reportSafeIndex(9, 21) == -1);
    assert(c.reportSafeIndex(9, 22) == -1);
    assert(c.reportSafeIndex(9, 23) == -1);
    assert(c.reportSafeIndex(9, 24) == -1);
    assert(c.reportSafeIndex(9, 25) == -1);
    assert(c.reportSafeIndex(9, 26) == -1);
    assert(c.reportSafeIndex(9, 27) == -1);
    assert(c.reportSafeIndex(9, 28) == -1);
    assert(c.reportSafeIndex(9, 29) == -1);
    assert(c.reportSafeIndex(9, 30) == -1);
    assert(c.reportSafeIndex(9, 31) == -1);
    assert(c.reportSafeIndex(9, 32) == -1);
    assert(c.reportSafeIndex(9, 33) == -1);
    assert(c.reportSafeIndex(9, 34) == -1);
    assert(c.reportSafeIndex(9, 35) == -1);
    assert(c.reportSafeIndex(9, 36) == -1);
    assert(c.reportSafeIndex(9, 37) == -1);
    assert(c.reportSafeIndex(9, 38) == -1);
    assert(c.reportSafeIndex(9, 39) == -1);
    assert(c.reportSafeIndex(9, 40) == -1);
    assert(c.reportSafeIndex(9, 41) == -1);
    assert(c.reportSafeIndex(10, -5) == -1);
    assert(c.reportSafeIndex(10, -4) == -1);
    assert(c.reportSafeIndex(10, -3) == -1);
    assert(c.reportSafeIndex(10, -2) == -1);
    assert(c.reportSafeIndex(10, -1) == -1);
    assert(c.reportSafeIndex(10, 0) == -1);
    assert(c.reportSafeIndex(10, 1) == 9);
    assert(c.reportSafeIndex(10, 2) == 4);
    assert(c.reportSafeIndex(10, 3) == 3);
    assert(c.reportSafeIndex(10, 4) == 4);
    assert(c.reportSafeIndex(10, 5) == 2);
    assert(c.reportSafeIndex(10, 6) == 2);
    assert(c.reportSafeIndex(10, 7) == 8);
    assert(c.reportSafeIndex(10, 8) == 0);
    assert(c.reportSafeIndex(10, 9) == 6);
    assert(c.reportSafeIndex(10, 10) == 7);
    assert(c.reportSafeIndex(10, 11) == 6);
    assert(c.reportSafeIndex(10, 12) == 9);
    assert(c.reportSafeIndex(10, 13) == 4);
    assert(c.reportSafeIndex(10, 14) == 6);
    assert(c.reportSafeIndex(10, 15) == 5);
    assert(c.reportSafeIndex(10, 16) == 6);
    assert(c.reportSafeIndex(10, 17) == 2);
    assert(c.reportSafeIndex(10, 18) == 4);
    assert(c.reportSafeIndex(10, 19) == 1);
    assert(c.reportSafeIndex(10, 20) == 0);
    assert(c.reportSafeIndex(10, 21) == 9);
    assert(c.reportSafeIndex(10, 22) == 9);
    assert(c.reportSafeIndex(10, 23) == 9);
    assert(c.reportSafeIndex(10, 24) == 0);
    assert(c.reportSafeIndex(10, 25) == 5);
    assert(c.reportSafeIndex(10, 26) == 8);
    assert(c.reportSafeIndex(10, 27) == 4);
    assert(c.reportSafeIndex(10, 28) == 5);
    assert(c.reportSafeIndex(10, 29) == 4);
    assert(c.reportSafeIndex(10, 30) == 5);
    assert(c.reportSafeIndex(10, 31) == 1);
    assert(c.reportSafeIndex(10, 32) == 2);
    assert(c.reportSafeIndex(10, 33) == 1);
    assert(c.reportSafeIndex(10, 34) == 1);
    assert(c.reportSafeIndex(10, 35) == 9);
    assert(c.reportSafeIndex(10, 36) == 2);
    assert(c.reportSafeIndex(10, 37) == 8);
    assert(c.reportSafeIndex(10, 38) == 8);
    assert(c.reportSafeIndex(10, 39) == 6);
    assert(c.reportSafeIndex(10, 40) == 7);
    assert(c.reportSafeIndex(10, 41) == 7);
    assert(c.reportSafeIndex(11, -5) == -1);
    assert(c.reportSafeIndex(11, -4) == -1);
    assert(c.reportSafeIndex(11, -3) == -1);
    assert(c.reportSafeIndex(11, -2) == -1);
    assert(c.reportSafeIndex(11, -1) == -1);
    assert(c.reportSafeIndex(11, 0) == -1);
    assert(c.reportSafeIndex(11, 1) == 10);
    assert(c.reportSafeIndex(11, 2) == 6);
    assert(c.reportSafeIndex(11, 3) == 6);
    assert(c.reportSafeIndex(11, 4) == 8);
    assert(c.reportSafeIndex(11, 5) == 7);
    assert(c.reportSafeIndex(11, 6) == 8);
    assert(c.reportSafeIndex(11, 7) == 4);
    assert(c.reportSafeIndex(11, 8) == 8);
    assert(c.reportSafeIndex(11, 9) == 4);
    assert(c.reportSafeIndex(11, 10) == 6);
    assert(c.reportSafeIndex(11, 11) == 6);
    assert(c.reportSafeIndex(11, 12) == 10);
    assert(c.reportSafeIndex(11, 13) == 6);
    assert(c.reportSafeIndex(11, 14) == 9);
    assert(c.reportSafeIndex(11, 15) == 9);
    assert(c.reportSafeIndex(11, 16) == 0);
    assert(c.reportSafeIndex(11, 17) == 8);
    assert(c.reportSafeIndex(11, 18) == 0);
    assert(c.reportSafeIndex(11, 19) == 9);
    assert(c.reportSafeIndex(11, 20) == 9);
    assert(c.reportSafeIndex(11, 21) == 8);
    assert(c.reportSafeIndex(11, 22) == 9);
    assert(c.reportSafeIndex(11, 23) == 10);
    assert(c.reportSafeIndex(11, 24) == 2);
    assert(c.reportSafeIndex(11, 25) == 8);
    assert(c.reportSafeIndex(11, 26) == 1);
    assert(c.reportSafeIndex(11, 27) == 9);
    assert(c.reportSafeIndex(11, 28) == 0);
    assert(c.reportSafeIndex(11, 29) == 0);
    assert(c.reportSafeIndex(11, 30) == 2);
    assert(c.reportSafeIndex(11, 31) == 10);
    assert(c.reportSafeIndex(11, 32) == 1);
    assert(c.reportSafeIndex(11, 33) == 1);
    assert(c.reportSafeIndex(11, 34) == 2);
    assert(c.reportSafeIndex(11, 35) == 0);
    assert(c.reportSafeIndex(11, 36) == 5);
    assert(c.reportSafeIndex(11, 37) == 1);
    assert(c.reportSafeIndex(11, 38) == 2);
    assert(c.reportSafeIndex(11, 39) == 1);
    assert(c.reportSafeIndex(11, 40) == 3);
    assert(c.reportSafeIndex(11, 41) == 4);
    assert(c.reportSafeIndex(12, -5) == -1);
    assert(c.reportSafeIndex(12, -4) == -1);
    assert(c.reportSafeIndex(12, -3) == -1);
    assert(c.reportSafeIndex(12, -2) == -1);
    assert(c.reportSafeIndex(12, -1) == -1);
    assert(c.reportSafeIndex(12, 0) == -1);
    assert(c.reportSafeIndex(12, 1) == 11);
    assert(c.reportSafeIndex(12, 2) == 8);
    assert(c.reportSafeIndex(12, 3) == 9);
    assert(c.reportSafeIndex(12, 4) == 0);
    assert(c.reportSafeIndex(12, 5) == 0);
    assert(c.reportSafeIndex(12, 6) == 2);
    assert(c.reportSafeIndex(12, 7) == 11);
    assert(c.reportSafeIndex(12, 8) == 4);
    assert(c.reportSafeIndex(12, 9) == 1);
    assert(c.reportSafeIndex(12, 10) == 4);
    assert(c.reportSafeIndex(12, 11) == 5);
    assert(c.reportSafeIndex(12, 12) == 10);
    assert(c.reportSafeIndex(12, 13) == 7);
    assert(c.reportSafeIndex(12, 14) == 11);
    assert(c.reportSafeIndex(12, 15) == 0);
    assert(c.reportSafeIndex(12, 16) == 4);
    assert(c.reportSafeIndex(12, 17) == 1);
    assert(c.reportSafeIndex(12, 18) == 6);
    assert(c.reportSafeIndex(12, 19) == 4);
    assert(c.reportSafeIndex(12, 20) == 5);
    assert(c.reportSafeIndex(12, 21) == 5);
    assert(c.reportSafeIndex(12, 22) == 7);
    assert(c.reportSafeIndex(12, 23) == 9);
    assert(c.reportSafeIndex(12, 24) == 2);
    assert(c.reportSafeIndex(12, 25) == 9);
    assert(c.reportSafeIndex(12, 26) == 3);
    assert(c.reportSafeIndex(12, 27) == 0);
    assert(c.reportSafeIndex(12, 28) == 4);
    assert(c.reportSafeIndex(12, 29) == 5);
    assert(c.reportSafeIndex(12, 30) == 8);
    assert(c.reportSafeIndex(12, 31) == 5);
    assert(c.reportSafeIndex(12, 32) == 9);
    assert(c.reportSafeIndex(12, 33) == 10);
    assert(c.reportSafeIndex(12, 34) == 0);
    assert(c.reportSafeIndex(12, 35) == 11);
    assert(c.reportSafeIndex(12, 36) == 5);
    assert(c.reportSafeIndex(12, 37) == 2);
    assert(c.reportSafeIndex(12, 38) == 4);
    assert(c.reportSafeIndex(12, 39) == 4);
    assert(c.reportSafeIndex(12, 40) == 7);
    assert(c.reportSafeIndex(12, 41) == 9);
    assert(c.reportSafeIndex(13, -5) == -1);
    assert(c.reportSafeIndex(13, -4) == -1);
    assert(c.reportSafeIndex(13, -3) == -1);
    assert(c.reportSafeIndex(13, -2) == -1);
    assert(c.reportSafeIndex(13, -1) == -1);
    assert(c.reportSafeIndex(13, 0) == -1);
    assert(c.reportSafeIndex(13, 1) == 12);
    assert(c.reportSafeIndex(13, 2) == 10);
    assert(c.reportSafeIndex(13, 3) == 12);
    assert(c.reportSafeIndex(13, 4) == 4);
    assert(c.reportSafeIndex(13, 5) == 5);
    assert(c.reportSafeIndex(13, 6) == 8);
    assert(c.reportSafeIndex(13, 7) == 5);
    assert(c.reportSafeIndex(13, 8) == 12);
    assert(c.reportSafeIndex(13, 9) == 10);
    assert(c.reportSafeIndex(13, 10) == 1);
    assert(c.reportSafeIndex(13, 11) == 3);
    assert(c.reportSafeIndex(13, 12) == 9);
    assert(c.reportSafeIndex(13, 13) == 7);
    assert(c.reportSafeIndex(13, 14) == 12);
    assert(c.reportSafeIndex(13, 15) == 2);
    assert(c.reportSafeIndex(13, 16) == 7);
    assert(c.reportSafeIndex(13, 17) == 5);
    assert(c.reportSafeIndex(13, 18) == 11);
    assert(c.reportSafeIndex(13, 19) == 10);
    assert(c.reportSafeIndex(13, 20) == 12);
    assert(c.reportSafeIndex(13, 21) == 0);
    assert(c.reportSafeIndex(13, 22) == 3);
    assert(c.reportSafeIndex(13, 23) == 6);
    assert(c.reportSafeIndex(13, 24) == 0);
    assert(c.reportSafeIndex(13, 25) == 8);
    assert(c.reportSafeIndex(13, 26) == 3);
    assert(c.reportSafeIndex(13, 27) == 1);
    assert(c.reportSafeIndex(13, 28) == 6);
    assert(c.reportSafeIndex(13, 29) == 8);
    assert(c.reportSafeIndex(13, 30) == 12);
    assert(c.reportSafeIndex(13, 31) == 10);
    assert(c.reportSafeIndex(13, 32) == 2);
    assert(c.reportSafeIndex(13, 33) == 4);
    assert(c.reportSafeIndex(13, 34) == 8);
    assert(c.reportSafeIndex(13, 35) == 7);
    assert(c.reportSafeIndex(13, 36) == 2);
    assert(c.reportSafeIndex(13, 37) == 0);
    assert(c.reportSafeIndex(13, 38) == 3);
    assert(c.reportSafeIndex(13, 39) == 4);
    assert(c.reportSafeIndex(13, 40) == 8);
    assert(c.reportSafeIndex(13, 41) == 11);
    assert(c.reportSafeIndex(14, -5) == -1);
    assert(c.reportSafeIndex(14, -4) == -1);
    assert(c.reportSafeIndex(14, -3) == -1);
    assert(c.reportSafeIndex(14, -2) == -1);
    assert(c.reportSafeIndex(14, -1) == -1);
    assert(c.reportSafeIndex(14, 0) == -1);
    assert(c.reportSafeIndex(14, 1) == 13);
    assert(c.reportSafeIndex(14, 2) == 12);
    assert(c.reportSafeIndex(14, 3) == 1);
    assert(c.reportSafeIndex(14, 4) == 8);
    assert(c.reportSafeIndex(14, 5) == 10);
    assert(c.reportSafeIndex(14, 6) == 0);
    assert(c.reportSafeIndex(14, 7) == 12);
    assert(c.reportSafeIndex(14, 8) == 6);
    assert(c.reportSafeIndex(14, 9) == 5);
    assert(c.reportSafeIndex(14, 10) == 11);
    assert(c.reportSafeIndex(14, 11) == 0);
    assert(c.reportSafeIndex(14, 12) == 7);
    assert(c.reportSafeIndex(14, 13) == 6);
    assert(c.reportSafeIndex(14, 14) == 12);
    assert(c.reportSafeIndex(14, 15) == 3);
    assert(c.reportSafeIndex(14, 16) == 9);
    assert(c.reportSafeIndex(14, 17) == 8);
    assert(c.reportSafeIndex(14, 18) == 1);
    assert(c.reportSafeIndex(14, 19) == 1);
    assert(c.reportSafeIndex(14, 20) == 4);
    assert(c.reportSafeIndex(14, 21) == 7);
    assert(c.reportSafeIndex(14, 22) == 11);
    assert(c.reportSafeIndex(14, 23) == 1);
    assert(c.reportSafeIndex(14, 24) == 10);
    assert(c.reportSafeIndex(14, 25) == 5);
    assert(c.reportSafeIndex(14, 26) == 1);
    assert(c.reportSafeIndex(14, 27) == 0);
    assert(c.reportSafeIndex(14, 28) == 6);
    assert(c.reportSafeIndex(14, 29) == 9);
    assert(c.reportSafeIndex(14, 30) == 0);
    assert(c.reportSafeIndex(14, 31) == 13);
    assert(c.reportSafeIndex(14, 32) == 6);
    assert(c.reportSafeIndex(14, 33) == 9);
    assert(c.reportSafeIndex(14, 34) == 0);
    assert(c.reportSafeIndex(14, 35) == 0);
    assert(c.reportSafeIndex(14, 36) == 10);
    assert(c.reportSafeIndex(14, 37) == 9);
    assert(c.reportSafeIndex(14, 38) == 13);
    assert(c.reportSafeIndex(14, 39) == 1);
    assert(c.reportSafeIndex(14, 40) == 6);
    assert(c.reportSafeIndex(14, 41) == 10);
    assert(c.reportSafeIndex(15, -5) == -1);
    assert(c.reportSafeIndex(15, -4) == -1);
    assert(c.reportSafeIndex(15, -3) == -1);
    assert(c.reportSafeIndex(15, -2) == -1);
    assert(c.reportSafeIndex(15, -1) == -1);
    assert(c.reportSafeIndex(15, 0) == -1);
    assert(c.reportSafeIndex(15, 1) == 14);
    assert(c.reportSafeIndex(15, 2) == 14);
    assert(c.reportSafeIndex(15, 3) == 4);
    assert(c.reportSafeIndex(15, 4) == 12);
    assert(c.reportSafeIndex(15, 5) == 0);
    assert(c.reportSafeIndex(15, 6) == 6);
    assert(c.reportSafeIndex(15, 7) == 4);
    assert(c.reportSafeIndex(15, 8) == 14);
    assert(c.reportSafeIndex(15, 9) == 14);
    assert(c.reportSafeIndex(15, 10) == 6);
    assert(c.reportSafeIndex(15, 11) == 11);
    assert(c.reportSafeIndex(15, 12) == 4);
    assert(c.reportSafeIndex(15, 13) == 4);
    assert(c.reportSafeIndex(15, 14) == 11);
    assert(c.reportSafeIndex(15, 15) == 3);
    assert(c.reportSafeIndex(15, 16) == 10);
    assert(c.reportSafeIndex(15, 17) == 10);
    assert(c.reportSafeIndex(15, 18) == 4);
    assert(c.reportSafeIndex(15, 19) == 5);
    assert(c.reportSafeIndex(15, 20) == 9);
    assert(c.reportSafeIndex(15, 21) == 13);
    assert(c.reportSafeIndex(15, 22) == 3);
    assert(c.reportSafeIndex(15, 23) == 9);
    assert(c.reportSafeIndex(15, 24) == 4);
    assert(c.reportSafeIndex(15, 25) == 0);
    assert(c.reportSafeIndex(15, 26) == 12);
    assert(c.reportSafeIndex(15, 27) == 12);
    assert(c.reportSafeIndex(15, 28) == 4);
    assert(c.reportSafeIndex(15, 29) == 8);
    assert(c.reportSafeIndex(15, 30) == 0);
    assert(c.reportSafeIndex(15, 31) == 14);
    assert(c.reportSafeIndex(15, 32) == 8);
    assert(c.reportSafeIndex(15, 33) == 12);
    assert(c.reportSafeIndex(15, 34) == 4);
    assert(c.reportSafeIndex(15, 35) == 5);
    assert(c.reportSafeIndex(15, 36) == 1);
    assert(c.reportSafeIndex(15, 37) == 1);
    assert(c.reportSafeIndex(15, 38) == 6);
    assert(c.reportSafeIndex(15, 39) == 10);
    assert(c.reportSafeIndex(15, 40) == 1);
    assert(c.reportSafeIndex(15, 41) == 6);
    assert(c.reportSafeIndex(16, -5) == -1);
    assert(c.reportSafeIndex(16, -4) == -1);
    assert(c.reportSafeIndex(16, -3) == -1);
    assert(c.reportSafeIndex(16, -2) == -1);
    assert(c.reportSafeIndex(16, -1) == -1);
    assert(c.reportSafeIndex(16, 0) == -1);
    assert(c.reportSafeIndex(16, 1) == 15);
    assert(c.reportSafeIndex(16, 2) == 0);
    assert(c.reportSafeIndex(16, 3) == 7);
    assert(c.reportSafeIndex(16, 4) == 0);
    assert(c.reportSafeIndex(16, 5) == 5);
    assert(c.reportSafeIndex(16, 6) == 12);
    assert(c.reportSafeIndex(16, 7) == 11);
    assert(c.reportSafeIndex(16, 8) == 6);
    assert(c.reportSafeIndex(16, 9) == 7);
    assert(c.reportSafeIndex(16, 10) == 0);
    assert(c.reportSafeIndex(16, 11) == 6);
    assert(c.reportSafeIndex(16, 12) == 0);
    assert(c.reportSafeIndex(16, 13) == 1);
    assert(c.reportSafeIndex(16, 14) == 9);
    assert(c.reportSafeIndex(16, 15) == 2);
    assert(c.reportSafeIndex(16, 16) == 10);
    assert(c.reportSafeIndex(16, 17) == 11);
    assert(c.reportSafeIndex(16, 18) == 6);
    assert(c.reportSafeIndex(16, 19) == 8);
    assert(c.reportSafeIndex(16, 20) == 13);
    assert(c.reportSafeIndex(16, 21) == 2);
    assert(c.reportSafeIndex(16, 22) == 9);
    assert(c.reportSafeIndex(16, 23) == 0);
    assert(c.reportSafeIndex(16, 24) == 12);
    assert(c.reportSafeIndex(16, 25) == 9);
    assert(c.reportSafeIndex(16, 26) == 6);
    assert(c.reportSafeIndex(16, 27) == 7);
    assert(c.reportSafeIndex(16, 28) == 0);
    assert(c.reportSafeIndex(16, 29) == 5);
    assert(c.reportSafeIndex(16, 30) == 14);
    assert(c.reportSafeIndex(16, 31) == 13);
    assert(c.reportSafeIndex(16, 32) == 8);
    assert(c.reportSafeIndex(16, 33) == 13);
    assert(c.reportSafeIndex(16, 34) == 6);
    assert(c.reportSafeIndex(16, 35) == 8);
    assert(c.reportSafeIndex(16, 36) == 5);
    assert(c.reportSafeIndex(16, 37) == 6);
    assert(c.reportSafeIndex(16, 38) == 12);
    assert(c.reportSafeIndex(16, 39) == 1);
    assert(c.reportSafeIndex(16, 40) == 9);
    assert(c.reportSafeIndex(16, 41) == 15);
    assert(c.reportSafeIndex(17, -5) == -1);
    assert(c.reportSafeIndex(17, -4) == -1);
    assert(c.reportSafeIndex(17, -3) == -1);
    assert(c.reportSafeIndex(17, -2) == -1);
    assert(c.reportSafeIndex(17, -1) == -1);
    assert(c.reportSafeIndex(17, 0) == -1);
    assert(c.reportSafeIndex(17, 1) == 16);
    assert(c.reportSafeIndex(17, 2) == 2);
    assert(c.reportSafeIndex(17, 3) == 10);
    assert(c.reportSafeIndex(17, 4) == 4);
    assert(c.reportSafeIndex(17, 5) == 10);
    assert(c.reportSafeIndex(17, 6) == 1);
    assert(c.reportSafeIndex(17, 7) == 1);
    assert(c.reportSafeIndex(17, 8) == 14);
    assert(c.reportSafeIndex(17, 9) == 16);
    assert(c.reportSafeIndex(17, 10) == 10);
    assert(c.reportSafeIndex(17, 11) == 0);
    assert(c.reportSafeIndex(17, 12) == 12);
    assert(c.reportSafeIndex(17, 13) == 14);
    assert(c.reportSafeIndex(17, 14) == 6);
    assert(c.reportSafeIndex(17, 15) == 0);
    assert(c.reportSafeIndex(17, 16) == 9);
    assert(c.reportSafeIndex(17, 17) == 11);
    assert(c.reportSafeIndex(17, 18) == 7);
    assert(c.reportSafeIndex(17, 19) == 10);
    assert(c.reportSafeIndex(17, 20) == 16);
    assert(c.reportSafeIndex(17, 21) == 6);
    assert(c.reportSafeIndex(17, 22) == 14);
    assert(c.reportSafeIndex(17, 23) == 6);
    assert(c.reportSafeIndex(17, 24) == 2);
    assert(c.reportSafeIndex(17, 25) == 0);
    assert(c.reportSafeIndex(17, 26) == 15);
    assert(c.reportSafeIndex(17, 27) == 0);
    assert(c.reportSafeIndex(17, 28) == 11);
    assert(c.reportSafeIndex(17, 29) == 0);
    assert(c.reportSafeIndex(17, 30) == 10);
    assert(c.reportSafeIndex(17, 31) == 10);
    assert(c.reportSafeIndex(17, 32) == 6);
    assert(c.reportSafeIndex(17, 33) == 12);
    assert(c.reportSafeIndex(17, 34) == 6);
    assert(c.reportSafeIndex(17, 35) == 9);
    assert(c.reportSafeIndex(17, 36) == 7);
    assert(c.reportSafeIndex(17, 37) == 9);
    assert(c.reportSafeIndex(17, 38) == 16);
    assert(c.reportSafeIndex(17, 39) == 6);
    assert(c.reportSafeIndex(17, 40) == 15);
    assert(c.reportSafeIndex(17, 41) == 5);
    assert(c.reportSafeIndex(18, -5) == -1);
    assert(c.reportSafeIndex(18, -4) == -1);
    assert(c.reportSafeIndex(18, -3) == -1);
    assert(c.reportSafeIndex(18, -2) == -1);
    assert(c.reportSafeIndex(18, -1) == -1);
    assert(c.reportSafeIndex(18, 0) == -1);
    assert(c.reportSafeIndex(18, 1) == 17);
    assert(c.reportSafeIndex(18, 2) == 4);
    assert(c.reportSafeIndex(18, 3) == 13);
    assert(c.reportSafeIndex(18, 4) == 8);
    assert(c.reportSafeIndex(18, 5) == 15);
    assert(c.reportSafeIndex(18, 6) == 7);
    assert(c.reportSafeIndex(18, 7) == 8);
    assert(c.reportSafeIndex(18, 8) == 4);
    assert(c.reportSafeIndex(18, 9) == 7);
    assert(c.reportSafeIndex(18, 10) == 2);
    assert(c.reportSafeIndex(18, 11) == 11);
    assert(c.reportSafeIndex(18, 12) == 6);
    assert(c.reportSafeIndex(18, 13) == 9);
    assert(c.reportSafeIndex(18, 14) == 2);
    assert(c.reportSafeIndex(18, 15) == 15);
    assert(c.reportSafeIndex(18, 16) == 7);
    assert(c.reportSafeIndex(18, 17) == 10);
    assert(c.reportSafeIndex(18, 18) == 7);
    assert(c.reportSafeIndex(18, 19) == 11);
    assert(c.reportSafeIndex(18, 20) == 0);
    assert(c.reportSafeIndex(18, 21) == 9);
    assert(c.reportSafeIndex(18, 22) == 0);
    assert(c.reportSafeIndex(18, 23) == 11);
    assert(c.reportSafeIndex(18, 24) == 8);
    assert(c.reportSafeIndex(18, 25) == 7);
    assert(c.reportSafeIndex(18, 26) == 5);
    assert(c.reportSafeIndex(18, 27) == 9);
    assert(c.reportSafeIndex(18, 28) == 3);
    assert(c.reportSafeIndex(18, 29) == 11);
    assert(c.reportSafeIndex(18, 30) == 4);
    assert(c.reportSafeIndex(18, 31) == 5);
    assert(c.reportSafeIndex(18, 32) == 2);
    assert(c.reportSafeIndex(18, 33) == 9);
    assert(c.reportSafeIndex(18, 34) == 4);
    assert(c.reportSafeIndex(18, 35) == 8);
    assert(c.reportSafeIndex(18, 36) == 7);
    assert(c.reportSafeIndex(18, 37) == 10);
    assert(c.reportSafeIndex(18, 38) == 0);
    assert(c.reportSafeIndex(18, 39) == 9);
    assert(c.reportSafeIndex(18, 40) == 1);
    assert(c.reportSafeIndex(18, 41) == 10);
    assert(c.reportSafeIndex(19, -5) == -1);
    assert(c.reportSafeIndex(19, -4) == -1);
    assert(c.reportSafeIndex(19, -3) == -1);
    assert(c.reportSafeIndex(19, -2) == -1);
    assert(c.reportSafeIndex(19, -1) == -1);
    assert(c.reportSafeIndex(19, 0) == -1);
    assert(c.reportSafeIndex(19, 1) == 18);
    assert(c.reportSafeIndex(19, 2) == 6);
    assert(c.reportSafeIndex(19, 3) == 16);
    assert(c.reportSafeIndex(19, 4) == 12);
    assert(c.reportSafeIndex(19, 5) == 1);
    assert(c.reportSafeIndex(19, 6) == 13);
    assert(c.reportSafeIndex(19, 7) == 15);
    assert(c.reportSafeIndex(19, 8) == 12);
    assert(c.reportSafeIndex(19, 9) == 16);
    assert(c.reportSafeIndex(19, 10) == 12);
    assert(c.reportSafeIndex(19, 11) == 3);
    assert(c.reportSafeIndex(19, 12) == 18);
    assert(c.reportSafeIndex(19, 13) == 3);
    assert(c.reportSafeIndex(19, 14) == 16);
    assert(c.reportSafeIndex(19, 15) == 11);
    assert(c.reportSafeIndex(19, 16) == 4);
    assert(c.reportSafeIndex(19, 17) == 8);
    assert(c.reportSafeIndex(19, 18) == 6);
    assert(c.reportSafeIndex(19, 19) == 11);
    assert(c.reportSafeIndex(19, 20) == 1);
    assert(c.reportSafeIndex(19, 21) == 11);
    assert(c.reportSafeIndex(19, 22) == 3);
    assert(c.reportSafeIndex(19, 23) == 15);
    assert(c.reportSafeIndex(19, 24) == 13);
    assert(c.reportSafeIndex(19, 25) == 13);
    assert(c.reportSafeIndex(19, 26) == 12);
    assert(c.reportSafeIndex(19, 27) == 17);
    assert(c.reportSafeIndex(19, 28) == 12);
    assert(c.reportSafeIndex(19, 29) == 2);
    assert(c.reportSafeIndex(19, 30) == 15);
    assert(c.reportSafeIndex(19, 31) == 17);
    assert(c.reportSafeIndex(19, 32) == 15);
    assert(c.reportSafeIndex(19, 33) == 4);
    assert(c.reportSafeIndex(19, 34) == 0);
    assert(c.reportSafeIndex(19, 35) == 5);
    assert(c.reportSafeIndex(19, 36) == 5);
    assert(c.reportSafeIndex(19, 37) == 9);
    assert(c.reportSafeIndex(19, 38) == 0);
    assert(c.reportSafeIndex(19, 39) == 10);
    assert(c.reportSafeIndex(19, 40) == 3);
    assert(c.reportSafeIndex(19, 41) == 13);
    assert(c.reportSafeIndex(20, -5) == -1);
    assert(c.reportSafeIndex(20, -4) == -1);
    assert(c.reportSafeIndex(20, -3) == -1);
    assert(c.reportSafeIndex(20, -2) == -1);
    assert(c.reportSafeIndex(20, -1) == -1);
    assert(c.reportSafeIndex(20, 0) == -1);
    assert(c.reportSafeIndex(20, 1) == 19);
    assert(c.reportSafeIndex(20, 2) == 8);
    assert(c.reportSafeIndex(20, 3) == 19);
    assert(c.reportSafeIndex(20, 4) == 16);
    assert(c.reportSafeIndex(20, 5) == 6);
    assert(c.reportSafeIndex(20, 6) == 19);
    assert(c.reportSafeIndex(20, 7) == 2);
    assert(c.reportSafeIndex(20, 8) == 0);
    assert(c.reportSafeIndex(20, 9) == 5);
    assert(c.reportSafeIndex(20, 10) == 2);
    assert(c.reportSafeIndex(20, 11) == 14);
    assert(c.reportSafeIndex(20, 12) == 10);
    assert(c.reportSafeIndex(20, 13) == 16);
    assert(c.reportSafeIndex(20, 14) == 10);
    assert(c.reportSafeIndex(20, 15) == 6);
    assert(c.reportSafeIndex(20, 16) == 0);
    assert(c.reportSafeIndex(20, 17) == 5);
    assert(c.reportSafeIndex(20, 18) == 4);
    assert(c.reportSafeIndex(20, 19) == 10);
    assert(c.reportSafeIndex(20, 20) == 1);
    assert(c.reportSafeIndex(20, 21) == 12);
    assert(c.reportSafeIndex(20, 22) == 5);
    assert(c.reportSafeIndex(20, 23) == 18);
    assert(c.reportSafeIndex(20, 24) == 17);
    assert(c.reportSafeIndex(20, 25) == 18);
    assert(c.reportSafeIndex(20, 26) == 18);
    assert(c.reportSafeIndex(20, 27) == 4);
    assert(c.reportSafeIndex(20, 28) == 0);
    assert(c.reportSafeIndex(20, 29) == 11);
    assert(c.reportSafeIndex(20, 30) == 5);
    assert(c.reportSafeIndex(20, 31) == 8);
    assert(c.reportSafeIndex(20, 32) == 7);
    assert(c.reportSafeIndex(20, 33) == 17);
    assert(c.reportSafeIndex(20, 34) == 14);
    assert(c.reportSafeIndex(20, 35) == 0);
    assert(c.reportSafeIndex(20, 36) == 1);
    assert(c.reportSafeIndex(20, 37) == 6);
    assert(c.reportSafeIndex(20, 38) == 18);
    assert(c.reportSafeIndex(20, 39) == 9);
    assert(c.reportSafeIndex(20, 40) == 3);
    assert(c.reportSafeIndex(20, 41) == 14);
    assert(c.reportSafeIndex(21, -5) == -1);
    assert(c.reportSafeIndex(21, -4) == -1);
    assert(c.reportSafeIndex(21, -3) == -1);
    assert(c.reportSafeIndex(21, -2) == -1);
    assert(c.reportSafeIndex(21, -1) == -1);
    assert(c.reportSafeIndex(21, 0) == -1);
    assert(c.reportSafeIndex(21, 1) == -1);
    assert(c.reportSafeIndex(21, 2) == -1);
    assert(c.reportSafeIndex(21, 3) == -1);
    assert(c.reportSafeIndex(21, 4) == -1);
    assert(c.reportSafeIndex(21, 5) == -1);
    assert(c.reportSafeIndex(21, 6) == -1);
    assert(c.reportSafeIndex(21, 7) == -1);
    assert(c.reportSafeIndex(21, 8) == -1);
    assert(c.reportSafeIndex(21, 9) == -1);
    assert(c.reportSafeIndex(21, 10) == -1);
    assert(c.reportSafeIndex(21, 11) == -1);
    assert(c.reportSafeIndex(21, 12) == -1);
    assert(c.reportSafeIndex(21, 13) == -1);
    assert(c.reportSafeIndex(21, 14) == -1);
    assert(c.reportSafeIndex(21, 15) == -1);
    assert(c.reportSafeIndex(21, 16) == -1);
    assert(c.reportSafeIndex(21, 17) == -1);
    assert(c.reportSafeIndex(21, 18) == -1);
    assert(c.reportSafeIndex(21, 19) == -1);
    assert(c.reportSafeIndex(21, 20) == -1);
    assert(c.reportSafeIndex(21, 21) == -1);
    assert(c.reportSafeIndex(21, 22) == -1);
    assert(c.reportSafeIndex(21, 23) == -1);
    assert(c.reportSafeIndex(21, 24) == -1);
    assert(c.reportSafeIndex(21, 25) == -1);
    assert(c.reportSafeIndex(21, 26) == -1);
    assert(c.reportSafeIndex(21, 27) == -1);
    assert(c.reportSafeIndex(21, 28) == -1);
    assert(c.reportSafeIndex(21, 29) == -1);
    assert(c.reportSafeIndex(21, 30) == -1);
    assert(c.reportSafeIndex(21, 31) == -1);
    assert(c.reportSafeIndex(21, 32) == -1);
    assert(c.reportSafeIndex(21, 33) == -1);
    assert(c.reportSafeIndex(21, 34) == -1);
    assert(c.reportSafeIndex(21, 35) == -1);
    assert(c.reportSafeIndex(21, 36) == -1);
    assert(c.reportSafeIndex(21, 37) == -1);
    assert(c.reportSafeIndex(21, 38) == -1);
    assert(c.reportSafeIndex(21, 39) == -1);
    assert(c.reportSafeIndex(21, 40) == -1);
    assert(c.reportSafeIndex(21, 41) == -1);
    assert(c.reportSafeIndex(22, -5) == -1);
    assert(c.reportSafeIndex(22, -4) == -1);
    assert(c.reportSafeIndex(22, -3) == -1);
    assert(c.reportSafeIndex(22, -2) == -1);
    assert(c.reportSafeIndex(22, -1) == -1);
    assert(c.reportSafeIndex(22, 0) == -1);
    assert(c.reportSafeIndex(22, 1) == -1);
    assert(c.reportSafeIndex(22, 2) == -1);
    assert(c.reportSafeIndex(22, 3) == -1);
    assert(c.reportSafeIndex(22, 4) == -1);
    assert(c.reportSafeIndex(22, 5) == -1);
    assert(c.reportSafeIndex(22, 6) == -1);
    assert(c.reportSafeIndex(22, 7) == -1);
    assert(c.reportSafeIndex(22, 8) == -1);
    assert(c.reportSafeIndex(22, 9) == -1);
    assert(c.reportSafeIndex(22, 10) == -1);
    assert(c.reportSafeIndex(22, 11) == -1);
    assert(c.reportSafeIndex(22, 12) == -1);
    assert(c.reportSafeIndex(22, 13) == -1);
    assert(c.reportSafeIndex(22, 14) == -1);
    assert(c.reportSafeIndex(22, 15) == -1);
    assert(c.reportSafeIndex(22, 16) == -1);
    assert(c.reportSafeIndex(22, 17) == -1);
    assert(c.reportSafeIndex(22, 18) == -1);
    assert(c.reportSafeIndex(22, 19) == -1);
    assert(c.reportSafeIndex(22, 20) == -1);
    assert(c.reportSafeIndex(22, 21) == -1);
    assert(c.reportSafeIndex(22, 22) == -1);
    assert(c.reportSafeIndex(22, 23) == -1);
    assert(c.reportSafeIndex(22, 24) == -1);
    assert(c.reportSafeIndex(22, 25) == -1);
    assert(c.reportSafeIndex(22, 26) == -1);
    assert(c.reportSafeIndex(22, 27) == -1);
    assert(c.reportSafeIndex(22, 28) == -1);
    assert(c.reportSafeIndex(22, 29) == -1);
    assert(c.reportSafeIndex(22, 30) == -1);
    assert(c.reportSafeIndex(22, 31) == -1);
    assert(c.reportSafeIndex(22, 32) == -1);
    assert(c.reportSafeIndex(22, 33) == -1);
    assert(c.reportSafeIndex(22, 34) == -1);
    assert(c.reportSafeIndex(22, 35) == -1);
    assert(c.reportSafeIndex(22, 36) == -1);
    assert(c.reportSafeIndex(22, 37) == -1);
    assert(c.reportSafeIndex(22, 38) == -1);
    assert(c.reportSafeIndex(22, 39) == -1);
    assert(c.reportSafeIndex(22, 40) == -1);
    assert(c.reportSafeIndex(22, 41) == -1);
    assert(c.reportSafeIndex(23, -5) == -1);
    assert(c.reportSafeIndex(23, -4) == -1);
    assert(c.reportSafeIndex(23, -3) == -1);
    assert(c.reportSafeIndex(23, -2) == -1);
    assert(c.reportSafeIndex(23, -1) == -1);
    assert(c.reportSafeIndex(23, 0) == -1);
    assert(c.reportSafeIndex(23, 1) == -1);
    assert(c.reportSafeIndex(23, 2) == -1);
    assert(c.reportSafeIndex(23, 3) == -1);
    assert(c.reportSafeIndex(23, 4) == -1);
    assert(c.reportSafeIndex(23, 5) == -1);
    assert(c.reportSafeIndex(23, 6) == -1);
    assert(c.reportSafeIndex(23, 7) == -1);
    assert(c.reportSafeIndex(23, 8) == -1);
    assert(c.reportSafeIndex(23, 9) == -1);
    assert(c.reportSafeIndex(23, 10) == -1);
    assert(c.reportSafeIndex(23, 11) == -1);
    assert(c.reportSafeIndex(23, 12) == -1);
    assert(c.reportSafeIndex(23, 13) == -1);
    assert(c.reportSafeIndex(23, 14) == -1);
    assert(c.reportSafeIndex(23, 15) == -1);
    assert(c.reportSafeIndex(23, 16) == -1);
    assert(c.reportSafeIndex(23, 17) == -1);
    assert(c.reportSafeIndex(23, 18) == -1);
    assert(c.reportSafeIndex(23, 19) == -1);
    assert(c.reportSafeIndex(23, 20) == -1);
    assert(c.reportSafeIndex(23, 21) == -1);
    assert(c.reportSafeIndex(23, 22) == -1);
    assert(c.reportSafeIndex(23, 23) == -1);
    assert(c.reportSafeIndex(23, 24) == -1);
    assert(c.reportSafeIndex(23, 25) == -1);
    assert(c.reportSafeIndex(23, 26) == -1);
    assert(c.reportSafeIndex(23, 27) == -1);
    assert(c.reportSafeIndex(23, 28) == -1);
    assert(c.reportSafeIndex(23, 29) == -1);
    assert(c.reportSafeIndex(23, 30) == -1);
    assert(c.reportSafeIndex(23, 31) == -1);
    assert(c.reportSafeIndex(23, 32) == -1);
    assert(c.reportSafeIndex(23, 33) == -1);
    assert(c.reportSafeIndex(23, 34) == -1);
    assert(c.reportSafeIndex(23, 35) == -1);
    assert(c.reportSafeIndex(23, 36) == -1);
    assert(c.reportSafeIndex(23, 37) == -1);
    assert(c.reportSafeIndex(23, 38) == -1);
    assert(c.reportSafeIndex(23, 39) == -1);
    assert(c.reportSafeIndex(23, 40) == -1);
    assert(c.reportSafeIndex(23, 41) == -1);
    assert(c.reportSafeIndex(24, -5) == -1);
    assert(c.reportSafeIndex(24, -4) == -1);
    assert(c.reportSafeIndex(24, -3) == -1);
    assert(c.reportSafeIndex(24, -2) == -1);
    assert(c.reportSafeIndex(24, -1) == -1);
    assert(c.reportSafeIndex(24, 0) == -1);
    assert(c.reportSafeIndex(24, 1) == -1);
    assert(c.reportSafeIndex(24, 2) == -1);
    assert(c.reportSafeIndex(24, 3) == -1);
    assert(c.reportSafeIndex(24, 4) == -1);
    assert(c.reportSafeIndex(24, 5) == -1);
    assert(c.reportSafeIndex(24, 6) == -1);
    assert(c.reportSafeIndex(24, 7) == -1);
    assert(c.reportSafeIndex(24, 8) == -1);
    assert(c.reportSafeIndex(24, 9) == -1);
    assert(c.reportSafeIndex(24, 10) == -1);
    assert(c.reportSafeIndex(24, 11) == -1);
    assert(c.reportSafeIndex(24, 12) == -1);
    assert(c.reportSafeIndex(24, 13) == -1);
    assert(c.reportSafeIndex(24, 14) == -1);
    assert(c.reportSafeIndex(24, 15) == -1);
    assert(c.reportSafeIndex(24, 16) == -1);
    assert(c.reportSafeIndex(24, 17) == -1);
    assert(c.reportSafeIndex(24, 18) == -1);
    assert(c.reportSafeIndex(24, 19) == -1);
    assert(c.reportSafeIndex(24, 20) == -1);
    assert(c.reportSafeIndex(24, 21) == -1);
    assert(c.reportSafeIndex(24, 22) == -1);
    assert(c.reportSafeIndex(24, 23) == -1);
    assert(c.reportSafeIndex(24, 24) == -1);
    assert(c.reportSafeIndex(24, 25) == -1);
    assert(c.reportSafeIndex(24, 26) == -1);
    assert(c.reportSafeIndex(24, 27) == -1);
    assert(c.reportSafeIndex(24, 28) == -1);
    assert(c.reportSafeIndex(24, 29) == -1);
    assert(c.reportSafeIndex(24, 30) == -1);
    assert(c.reportSafeIndex(24, 31) == -1);
    assert(c.reportSafeIndex(24, 32) == -1);
    assert(c.reportSafeIndex(24, 33) == -1);
    assert(c.reportSafeIndex(24, 34) == -1);
    assert(c.reportSafeIndex(24, 35) == -1);
    assert(c.reportSafeIndex(24, 36) == -1);
    assert(c.reportSafeIndex(24, 37) == -1);
    assert(c.reportSafeIndex(24, 38) == -1);
    assert(c.reportSafeIndex(24, 39) == -1);
    assert(c.reportSafeIndex(24, 40) == -1);
    assert(c.reportSafeIndex(24, 41) == -1);
    assert(c.reportSafeIndex(25, -5) == -1);
    assert(c.reportSafeIndex(25, -4) == -1);
    assert(c.reportSafeIndex(25, -3) == -1);
    assert(c.reportSafeIndex(25, -2) == -1);
    assert(c.reportSafeIndex(25, -1) == -1);
    assert(c.reportSafeIndex(25, 0) == -1);
    assert(c.reportSafeIndex(25, 1) == -1);
    assert(c.reportSafeIndex(25, 2) == -1);
    assert(c.reportSafeIndex(25, 3) == -1);
    assert(c.reportSafeIndex(25, 4) == -1);
    assert(c.reportSafeIndex(25, 5) == -1);
    assert(c.reportSafeIndex(25, 6) == -1);
    assert(c.reportSafeIndex(25, 7) == -1);
    assert(c.reportSafeIndex(25, 8) == -1);
    assert(c.reportSafeIndex(25, 9) == -1);
    assert(c.reportSafeIndex(25, 10) == -1);
    assert(c.reportSafeIndex(25, 11) == -1);
    assert(c.reportSafeIndex(25, 12) == -1);
    assert(c.reportSafeIndex(25, 13) == -1);
    assert(c.reportSafeIndex(25, 14) == -1);
    assert(c.reportSafeIndex(25, 15) == -1);
    assert(c.reportSafeIndex(25, 16) == -1);
    assert(c.reportSafeIndex(25, 17) == -1);
    assert(c.reportSafeIndex(25, 18) == -1);
    assert(c.reportSafeIndex(25, 19) == -1);
    assert(c.reportSafeIndex(25, 20) == -1);
    assert(c.reportSafeIndex(25, 21) == -1);
    assert(c.reportSafeIndex(25, 22) == -1);
    assert(c.reportSafeIndex(25, 23) == -1);
    assert(c.reportSafeIndex(25, 24) == -1);
    assert(c.reportSafeIndex(25, 25) == -1);
    assert(c.reportSafeIndex(25, 26) == -1);
    assert(c.reportSafeIndex(25, 27) == -1);
    assert(c.reportSafeIndex(25, 28) == -1);
    assert(c.reportSafeIndex(25, 29) == -1);
    assert(c.reportSafeIndex(25, 30) == -1);
    assert(c.reportSafeIndex(25, 31) == -1);
    assert(c.reportSafeIndex(25, 32) == -1);
    assert(c.reportSafeIndex(25, 33) == -1);
    assert(c.reportSafeIndex(25, 34) == -1);
    assert(c.reportSafeIndex(25, 35) == -1);
    assert(c.reportSafeIndex(25, 36) == -1);
    assert(c.reportSafeIndex(25, 37) == -1);
    assert(c.reportSafeIndex(25, 38) == -1);
    assert(c.reportSafeIndex(25, 39) == -1);
    assert(c.reportSafeIndex(25, 40) == -1);
    assert(c.reportSafeIndex(25, 41) == -1);
    assert(c.reportSafeIndex(26, -5) == -1);
    assert(c.reportSafeIndex(26, -4) == -1);
    assert(c.reportSafeIndex(26, -3) == -1);
    assert(c.reportSafeIndex(26, -2) == -1);
    assert(c.reportSafeIndex(26, -1) == -1);
    assert(c.reportSafeIndex(26, 0) == -1);
    assert(c.reportSafeIndex(26, 1) == -1);
    assert(c.reportSafeIndex(26, 2) == -1);
    assert(c.reportSafeIndex(26, 3) == -1);
    assert(c.reportSafeIndex(26, 4) == -1);
    assert(c.reportSafeIndex(26, 5) == -1);
    assert(c.reportSafeIndex(26, 6) == -1);
    assert(c.reportSafeIndex(26, 7) == -1);
    assert(c.reportSafeIndex(26, 8) == -1);
    assert(c.reportSafeIndex(26, 9) == -1);
    assert(c.reportSafeIndex(26, 10) == -1);
    assert(c.reportSafeIndex(26, 11) == -1);
    assert(c.reportSafeIndex(26, 12) == -1);
    assert(c.reportSafeIndex(26, 13) == -1);
    assert(c.reportSafeIndex(26, 14) == -1);
    assert(c.reportSafeIndex(26, 15) == -1);
    assert(c.reportSafeIndex(26, 16) == -1);
    assert(c.reportSafeIndex(26, 17) == -1);
    assert(c.reportSafeIndex(26, 18) == -1);
    assert(c.reportSafeIndex(26, 19) == -1);
    assert(c.reportSafeIndex(26, 20) == -1);
    assert(c.reportSafeIndex(26, 21) == -1);
    assert(c.reportSafeIndex(26, 22) == -1);
    assert(c.reportSafeIndex(26, 23) == -1);
    assert(c.reportSafeIndex(26, 24) == -1);
    assert(c.reportSafeIndex(26, 25) == -1);
    assert(c.reportSafeIndex(26, 26) == -1);
    assert(c.reportSafeIndex(26, 27) == -1);
    assert(c.reportSafeIndex(26, 28) == -1);
    assert(c.reportSafeIndex(26, 29) == -1);
    assert(c.reportSafeIndex(26, 30) == -1);
    assert(c.reportSafeIndex(26, 31) == -1);
    assert(c.reportSafeIndex(26, 32) == -1);
    assert(c.reportSafeIndex(26, 33) == -1);
    assert(c.reportSafeIndex(26, 34) == -1);
    assert(c.reportSafeIndex(26, 35) == -1);
    assert(c.reportSafeIndex(26, 36) == -1);
    assert(c.reportSafeIndex(26, 37) == -1);
    assert(c.reportSafeIndex(26, 38) == -1);
    assert(c.reportSafeIndex(26, 39) == -1);
    assert(c.reportSafeIndex(26, 40) == -1);
    assert(c.reportSafeIndex(26, 41) == -1);
    assert(c.reportSafeIndex(27, -5) == -1);
    assert(c.reportSafeIndex(27, -4) == -1);
    assert(c.reportSafeIndex(27, -3) == -1);
    assert(c.reportSafeIndex(27, -2) == -1);
    assert(c.reportSafeIndex(27, -1) == -1);
    assert(c.reportSafeIndex(27, 0) == -1);
    assert(c.reportSafeIndex(27, 1) == -1);
    assert(c.reportSafeIndex(27, 2) == -1);
    assert(c.reportSafeIndex(27, 3) == -1);
    assert(c.reportSafeIndex(27, 4) == -1);
    assert(c.reportSafeIndex(27, 5) == -1);
    assert(c.reportSafeIndex(27, 6) == -1);
    assert(c.reportSafeIndex(27, 7) == -1);
    assert(c.reportSafeIndex(27, 8) == -1);
    assert(c.reportSafeIndex(27, 9) == -1);
    assert(c.reportSafeIndex(27, 10) == -1);
    assert(c.reportSafeIndex(27, 11) == -1);
    assert(c.reportSafeIndex(27, 12) == -1);
    assert(c.reportSafeIndex(27, 13) == -1);
    assert(c.reportSafeIndex(27, 14) == -1);
    assert(c.reportSafeIndex(27, 15) == -1);
    assert(c.reportSafeIndex(27, 16) == -1);
    assert(c.reportSafeIndex(27, 17) == -1);
    assert(c.reportSafeIndex(27, 18) == -1);
    assert(c.reportSafeIndex(27, 19) == -1);
    assert(c.reportSafeIndex(27, 20) == -1);
    assert(c.reportSafeIndex(27, 21) == -1);
    assert(c.reportSafeIndex(27, 22) == -1);
    assert(c.reportSafeIndex(27, 23) == -1);
    assert(c.reportSafeIndex(27, 24) == -1);
    assert(c.reportSafeIndex(27, 25) == -1);
    assert(c.reportSafeIndex(27, 26) == -1);
    assert(c.reportSafeIndex(27, 27) == -1);
    assert(c.reportSafeIndex(27, 28) == -1);
    assert(c.reportSafeIndex(27, 29) == -1);
    assert(c.reportSafeIndex(27, 30) == -1);
    assert(c.reportSafeIndex(27, 31) == -1);
    assert(c.reportSafeIndex(27, 32) == -1);
    assert(c.reportSafeIndex(27, 33) == -1);
    assert(c.reportSafeIndex(27, 34) == -1);
    assert(c.reportSafeIndex(27, 35) == -1);
    assert(c.reportSafeIndex(27, 36) == -1);
    assert(c.reportSafeIndex(27, 37) == -1);
    assert(c.reportSafeIndex(27, 38) == -1);
    assert(c.reportSafeIndex(27, 39) == -1);
    assert(c.reportSafeIndex(27, 40) == -1);
    assert(c.reportSafeIndex(27, 41) == -1);
    assert(c.reportSafeIndex(28, -5) == -1);
    assert(c.reportSafeIndex(28, -4) == -1);
    assert(c.reportSafeIndex(28, -3) == -1);
    assert(c.reportSafeIndex(28, -2) == -1);
    assert(c.reportSafeIndex(28, -1) == -1);
    assert(c.reportSafeIndex(28, 0) == -1);
    assert(c.reportSafeIndex(28, 1) == -1);
    assert(c.reportSafeIndex(28, 2) == -1);
    assert(c.reportSafeIndex(28, 3) == -1);
    assert(c.reportSafeIndex(28, 4) == -1);
    assert(c.reportSafeIndex(28, 5) == -1);
    assert(c.reportSafeIndex(28, 6) == -1);
    assert(c.reportSafeIndex(28, 7) == -1);
    assert(c.reportSafeIndex(28, 8) == -1);
    assert(c.reportSafeIndex(28, 9) == -1);
    assert(c.reportSafeIndex(28, 10) == -1);
    assert(c.reportSafeIndex(28, 11) == -1);
    assert(c.reportSafeIndex(28, 12) == -1);
    assert(c.reportSafeIndex(28, 13) == -1);
    assert(c.reportSafeIndex(28, 14) == -1);
    assert(c.reportSafeIndex(28, 15) == -1);
    assert(c.reportSafeIndex(28, 16) == -1);
    assert(c.reportSafeIndex(28, 17) == -1);
    assert(c.reportSafeIndex(28, 18) == -1);
    assert(c.reportSafeIndex(28, 19) == -1);
    assert(c.reportSafeIndex(28, 20) == -1);
    assert(c.reportSafeIndex(28, 21) == -1);
    assert(c.reportSafeIndex(28, 22) == -1);
    assert(c.reportSafeIndex(28, 23) == -1);
    assert(c.reportSafeIndex(28, 24) == -1);
    assert(c.reportSafeIndex(28, 25) == -1);
    assert(c.reportSafeIndex(28, 26) == -1);
    assert(c.reportSafeIndex(28, 27) == -1);
    assert(c.reportSafeIndex(28, 28) == -1);
    assert(c.reportSafeIndex(28, 29) == -1);
    assert(c.reportSafeIndex(28, 30) == -1);
    assert(c.reportSafeIndex(28, 31) == -1);
    assert(c.reportSafeIndex(28, 32) == -1);
    assert(c.reportSafeIndex(28, 33) == -1);
    assert(c.reportSafeIndex(28, 34) == -1);
    assert(c.reportSafeIndex(28, 35) == -1);
    assert(c.reportSafeIndex(28, 36) == -1);
    assert(c.reportSafeIndex(28, 37) == -1);
    assert(c.reportSafeIndex(28, 38) == -1);
    assert(c.reportSafeIndex(28, 39) == -1);
    assert(c.reportSafeIndex(28, 40) == -1);
    assert(c.reportSafeIndex(28, 41) == -1);
    assert(c.reportSafeIndex(29, -5) == -1);
    assert(c.reportSafeIndex(29, -4) == -1);
    assert(c.reportSafeIndex(29, -3) == -1);
    assert(c.reportSafeIndex(29, -2) == -1);
    assert(c.reportSafeIndex(29, -1) == -1);
    assert(c.reportSafeIndex(29, 0) == -1);
    assert(c.reportSafeIndex(29, 1) == -1);
    assert(c.reportSafeIndex(29, 2) == -1);
    assert(c.reportSafeIndex(29, 3) == -1);
    assert(c.reportSafeIndex(29, 4) == -1);
    assert(c.reportSafeIndex(29, 5) == -1);
    assert(c.reportSafeIndex(29, 6) == -1);
    assert(c.reportSafeIndex(29, 7) == -1);
    assert(c.reportSafeIndex(29, 8) == -1);
    assert(c.reportSafeIndex(29, 9) == -1);
    assert(c.reportSafeIndex(29, 10) == -1);
    assert(c.reportSafeIndex(29, 11) == -1);
    assert(c.reportSafeIndex(29, 12) == -1);
    assert(c.reportSafeIndex(29, 13) == -1);
    assert(c.reportSafeIndex(29, 14) == -1);
    assert(c.reportSafeIndex(29, 15) == -1);
    assert(c.reportSafeIndex(29, 16) == -1);
    assert(c.reportSafeIndex(29, 17) == -1);
    assert(c.reportSafeIndex(29, 18) == -1);
    assert(c.reportSafeIndex(29, 19) == -1);
    assert(c.reportSafeIndex(29, 20) == -1);
    assert(c.reportSafeIndex(29, 21) == -1);
    assert(c.reportSafeIndex(29, 22) == -1);
    assert(c.reportSafeIndex(29, 23) == -1);
    assert(c.reportSafeIndex(29, 24) == -1);
    assert(c.reportSafeIndex(29, 25) == -1);
    assert(c.reportSafeIndex(29, 26) == -1);
    assert(c.reportSafeIndex(29, 27) == -1);
    assert(c.reportSafeIndex(29, 28) == -1);
    assert(c.reportSafeIndex(29, 29) == -1);
    assert(c.reportSafeIndex(29, 30) == -1);
    assert(c.reportSafeIndex(29, 31) == -1);
    assert(c.reportSafeIndex(29, 32) == -1);
    assert(c.reportSafeIndex(29, 33) == -1);
    assert(c.reportSafeIndex(29, 34) == -1);
    assert(c.reportSafeIndex(29, 35) == -1);
    assert(c.reportSafeIndex(29, 36) == -1);
    assert(c.reportSafeIndex(29, 37) == -1);
    assert(c.reportSafeIndex(29, 38) == -1);
    assert(c.reportSafeIndex(29, 39) == -1);
    assert(c.reportSafeIndex(29, 40) == -1);
    assert(c.reportSafeIndex(29, 41) == -1);
    assert(c.reportSafeIndex(30, -5) == -1);
    assert(c.reportSafeIndex(30, -4) == -1);
    assert(c.reportSafeIndex(30, -3) == -1);
    assert(c.reportSafeIndex(30, -2) == -1);
    assert(c.reportSafeIndex(30, -1) == -1);
    assert(c.reportSafeIndex(30, 0) == -1);
    assert(c.reportSafeIndex(30, 1) == -1);
    assert(c.reportSafeIndex(30, 2) == -1);
    assert(c.reportSafeIndex(30, 3) == -1);
    assert(c.reportSafeIndex(30, 4) == -1);
    assert(c.reportSafeIndex(30, 5) == -1);
    assert(c.reportSafeIndex(30, 6) == -1);
    assert(c.reportSafeIndex(30, 7) == -1);
    assert(c.reportSafeIndex(30, 8) == -1);
    assert(c.reportSafeIndex(30, 9) == -1);
    assert(c.reportSafeIndex(30, 10) == -1);
    assert(c.reportSafeIndex(30, 11) == -1);
    assert(c.reportSafeIndex(30, 12) == -1);
    assert(c.reportSafeIndex(30, 13) == -1);
    assert(c.reportSafeIndex(30, 14) == -1);
    assert(c.reportSafeIndex(30, 15) == -1);
    assert(c.reportSafeIndex(30, 16) == -1);
    assert(c.reportSafeIndex(30, 17) == -1);
    assert(c.reportSafeIndex(30, 18) == -1);
    assert(c.reportSafeIndex(30, 19) == -1);
    assert(c.reportSafeIndex(30, 20) == -1);
    assert(c.reportSafeIndex(30, 21) == -1);
    assert(c.reportSafeIndex(30, 22) == -1);
    assert(c.reportSafeIndex(30, 23) == -1);
    assert(c.reportSafeIndex(30, 24) == -1);
    assert(c.reportSafeIndex(30, 25) == -1);
    assert(c.reportSafeIndex(30, 26) == -1);
    assert(c.reportSafeIndex(30, 27) == -1);
    assert(c.reportSafeIndex(30, 28) == -1);
    assert(c.reportSafeIndex(30, 29) == -1);
    assert(c.reportSafeIndex(30, 30) == -1);
    assert(c.reportSafeIndex(30, 31) == -1);
    assert(c.reportSafeIndex(30, 32) == -1);
    assert(c.reportSafeIndex(30, 33) == -1);
    assert(c.reportSafeIndex(30, 34) == -1);
    assert(c.reportSafeIndex(30, 35) == -1);
    assert(c.reportSafeIndex(30, 36) == -1);
    assert(c.reportSafeIndex(30, 37) == -1);
    assert(c.reportSafeIndex(30, 38) == -1);
    assert(c.reportSafeIndex(30, 39) == -1);
    assert(c.reportSafeIndex(30, 40) == -1);
    assert(c.reportSafeIndex(30, 41) == -1);
    assert(c.reportSafeIndex(31, -5) == -1);
    assert(c.reportSafeIndex(31, -4) == -1);
    assert(c.reportSafeIndex(31, -3) == -1);
    assert(c.reportSafeIndex(31, -2) == -1);
    assert(c.reportSafeIndex(31, -1) == -1);
    assert(c.reportSafeIndex(31, 0) == -1);
    assert(c.reportSafeIndex(31, 1) == -1);
    assert(c.reportSafeIndex(31, 2) == -1);
    assert(c.reportSafeIndex(31, 3) == -1);
    assert(c.reportSafeIndex(31, 4) == -1);
    assert(c.reportSafeIndex(31, 5) == -1);
    assert(c.reportSafeIndex(31, 6) == -1);
    assert(c.reportSafeIndex(31, 7) == -1);
    assert(c.reportSafeIndex(31, 8) == -1);
    assert(c.reportSafeIndex(31, 9) == -1);
    assert(c.reportSafeIndex(31, 10) == -1);
    assert(c.reportSafeIndex(31, 11) == -1);
    assert(c.reportSafeIndex(31, 12) == -1);
    assert(c.reportSafeIndex(31, 13) == -1);
    assert(c.reportSafeIndex(31, 14) == -1);
    assert(c.reportSafeIndex(31, 15) == -1);
    assert(c.reportSafeIndex(31, 16) == -1);
    assert(c.reportSafeIndex(31, 17) == -1);
    assert(c.reportSafeIndex(31, 18) == -1);
    assert(c.reportSafeIndex(31, 19) == -1);
    assert(c.reportSafeIndex(31, 20) == -1);
    assert(c.reportSafeIndex(31, 21) == -1);
    assert(c.reportSafeIndex(31, 22) == -1);
    assert(c.reportSafeIndex(31, 23) == -1);
    assert(c.reportSafeIndex(31, 24) == -1);
    assert(c.reportSafeIndex(31, 25) == -1);
    assert(c.reportSafeIndex(31, 26) == -1);
    assert(c.reportSafeIndex(31, 27) == -1);
    assert(c.reportSafeIndex(31, 28) == -1);
    assert(c.reportSafeIndex(31, 29) == -1);
    assert(c.reportSafeIndex(31, 30) == -1);
    assert(c.reportSafeIndex(31, 31) == -1);
    assert(c.reportSafeIndex(31, 32) == -1);
    assert(c.reportSafeIndex(31, 33) == -1);
    assert(c.reportSafeIndex(31, 34) == -1);
    assert(c.reportSafeIndex(31, 35) == -1);
    assert(c.reportSafeIndex(31, 36) == -1);
    assert(c.reportSafeIndex(31, 37) == -1);
    assert(c.reportSafeIndex(31, 38) == -1);
    assert(c.reportSafeIndex(31, 39) == -1);
    assert(c.reportSafeIndex(31, 40) == -1);
    assert(c.reportSafeIndex(31, 41) == -1);
    assert(c.reportSafeIndex(32, -5) == -1);
    assert(c.reportSafeIndex(32, -4) == -1);
    assert(c.reportSafeIndex(32, -3) == -1);
    assert(c.reportSafeIndex(32, -2) == -1);
    assert(c.reportSafeIndex(32, -1) == -1);
    assert(c.reportSafeIndex(32, 0) == -1);
    assert(c.reportSafeIndex(32, 1) == -1);
    assert(c.reportSafeIndex(32, 2) == -1);
    assert(c.reportSafeIndex(32, 3) == -1);
    assert(c.reportSafeIndex(32, 4) == -1);
    assert(c.reportSafeIndex(32, 5) == -1);
    assert(c.reportSafeIndex(32, 6) == -1);
    assert(c.reportSafeIndex(32, 7) == -1);
    assert(c.reportSafeIndex(32, 8) == -1);
    assert(c.reportSafeIndex(32, 9) == -1);
    assert(c.reportSafeIndex(32, 10) == -1);
    assert(c.reportSafeIndex(32, 11) == -1);
    assert(c.reportSafeIndex(32, 12) == -1);
    assert(c.reportSafeIndex(32, 13) == -1);
    assert(c.reportSafeIndex(32, 14) == -1);
    assert(c.reportSafeIndex(32, 15) == -1);
    assert(c.reportSafeIndex(32, 16) == -1);
    assert(c.reportSafeIndex(32, 17) == -1);
    assert(c.reportSafeIndex(32, 18) == -1);
    assert(c.reportSafeIndex(32, 19) == -1);
    assert(c.reportSafeIndex(32, 20) == -1);
    assert(c.reportSafeIndex(32, 21) == -1);
    assert(c.reportSafeIndex(32, 22) == -1);
    assert(c.reportSafeIndex(32, 23) == -1);
    assert(c.reportSafeIndex(32, 24) == -1);
    assert(c.reportSafeIndex(32, 25) == -1);
    assert(c.reportSafeIndex(32, 26) == -1);
    assert(c.reportSafeIndex(32, 27) == -1);
    assert(c.reportSafeIndex(32, 28) == -1);
    assert(c.reportSafeIndex(32, 29) == -1);
    assert(c.reportSafeIndex(32, 30) == -1);
    assert(c.reportSafeIndex(32, 31) == -1);
    assert(c.reportSafeIndex(32, 32) == -1);
    assert(c.reportSafeIndex(32, 33) == -1);
    assert(c.reportSafeIndex(32, 34) == -1);
    assert(c.reportSafeIndex(32, 35) == -1);
    assert(c.reportSafeIndex(32, 36) == -1);
    assert(c.reportSafeIndex(32, 37) == -1);
    assert(c.reportSafeIndex(32, 38) == -1);
    assert(c.reportSafeIndex(32, 39) == -1);
    assert(c.reportSafeIndex(32, 40) == -1);
    assert(c.reportSafeIndex(32, 41) == -1);
    assert(c.reportSafeIndex(33, -5) == -1);
    assert(c.reportSafeIndex(33, -4) == -1);
    assert(c.reportSafeIndex(33, -3) == -1);
    assert(c.reportSafeIndex(33, -2) == -1);
    assert(c.reportSafeIndex(33, -1) == -1);
    assert(c.reportSafeIndex(33, 0) == -1);
    assert(c.reportSafeIndex(33, 1) == -1);
    assert(c.reportSafeIndex(33, 2) == -1);
    assert(c.reportSafeIndex(33, 3) == -1);
    assert(c.reportSafeIndex(33, 4) == -1);
    assert(c.reportSafeIndex(33, 5) == -1);
    assert(c.reportSafeIndex(33, 6) == -1);
    assert(c.reportSafeIndex(33, 7) == -1);
    assert(c.reportSafeIndex(33, 8) == -1);
    assert(c.reportSafeIndex(33, 9) == -1);
    assert(c.reportSafeIndex(33, 10) == -1);
    assert(c.reportSafeIndex(33, 11) == -1);
    assert(c.reportSafeIndex(33, 12) == -1);
    assert(c.reportSafeIndex(33, 13) == -1);
    assert(c.reportSafeIndex(33, 14) == -1);
    assert(c.reportSafeIndex(33, 15) == -1);
    assert(c.reportSafeIndex(33, 16) == -1);
    assert(c.reportSafeIndex(33, 17) == -1);
    assert(c.reportSafeIndex(33, 18) == -1);
    assert(c.reportSafeIndex(33, 19) == -1);
    assert(c.reportSafeIndex(33, 20) == -1);
    assert(c.reportSafeIndex(33, 21) == -1);
    assert(c.reportSafeIndex(33, 22) == -1);
    assert(c.reportSafeIndex(33, 23) == -1);
    assert(c.reportSafeIndex(33, 24) == -1);
    assert(c.reportSafeIndex(33, 25) == -1);
    assert(c.reportSafeIndex(33, 26) == -1);
    assert(c.reportSafeIndex(33, 27) == -1);
    assert(c.reportSafeIndex(33, 28) == -1);
    assert(c.reportSafeIndex(33, 29) == -1);
    assert(c.reportSafeIndex(33, 30) == -1);
    assert(c.reportSafeIndex(33, 31) == -1);
    assert(c.reportSafeIndex(33, 32) == -1);
    assert(c.reportSafeIndex(33, 33) == -1);
    assert(c.reportSafeIndex(33, 34) == -1);
    assert(c.reportSafeIndex(33, 35) == -1);
    assert(c.reportSafeIndex(33, 36) == -1);
    assert(c.reportSafeIndex(33, 37) == -1);
    assert(c.reportSafeIndex(33, 38) == -1);
    assert(c.reportSafeIndex(33, 39) == -1);
    assert(c.reportSafeIndex(33, 40) == -1);
    assert(c.reportSafeIndex(33, 41) == -1);
    assert(c.reportSafeIndex(34, -5) == -1);
    assert(c.reportSafeIndex(34, -4) == -1);
    assert(c.reportSafeIndex(34, -3) == -1);
    assert(c.reportSafeIndex(34, -2) == -1);
    assert(c.reportSafeIndex(34, -1) == -1);
    assert(c.reportSafeIndex(34, 0) == -1);
    assert(c.reportSafeIndex(34, 1) == -1);
    assert(c.reportSafeIndex(34, 2) == -1);
    assert(c.reportSafeIndex(34, 3) == -1);
    assert(c.reportSafeIndex(34, 4) == -1);
    assert(c.reportSafeIndex(34, 5) == -1);
    assert(c.reportSafeIndex(34, 6) == -1);
    assert(c.reportSafeIndex(34, 7) == -1);
    assert(c.reportSafeIndex(34, 8) == -1);
    assert(c.reportSafeIndex(34, 9) == -1);
    assert(c.reportSafeIndex(34, 10) == -1);
    assert(c.reportSafeIndex(34, 11) == -1);
    assert(c.reportSafeIndex(34, 12) == -1);
    assert(c.reportSafeIndex(34, 13) == -1);
    assert(c.reportSafeIndex(34, 14) == -1);
    assert(c.reportSafeIndex(34, 15) == -1);
    assert(c.reportSafeIndex(34, 16) == -1);
    assert(c.reportSafeIndex(34, 17) == -1);
    assert(c.reportSafeIndex(34, 18) == -1);
    assert(c.reportSafeIndex(34, 19) == -1);
    assert(c.reportSafeIndex(34, 20) == -1);
    assert(c.reportSafeIndex(34, 21) == -1);
    assert(c.reportSafeIndex(34, 22) == -1);
    assert(c.reportSafeIndex(34, 23) == -1);
    assert(c.reportSafeIndex(34, 24) == -1);
    assert(c.reportSafeIndex(34, 25) == -1);
    assert(c.reportSafeIndex(34, 26) == -1);
    assert(c.reportSafeIndex(34, 27) == -1);
    assert(c.reportSafeIndex(34, 28) == -1);
    assert(c.reportSafeIndex(34, 29) == -1);
    assert(c.reportSafeIndex(34, 30) == -1);
    assert(c.reportSafeIndex(34, 31) == -1);
    assert(c.reportSafeIndex(34, 32) == -1);
    assert(c.reportSafeIndex(34, 33) == -1);
    assert(c.reportSafeIndex(34, 34) == -1);
    assert(c.reportSafeIndex(34, 35) == -1);
    assert(c.reportSafeIndex(34, 36) == -1);
    assert(c.reportSafeIndex(34, 37) == -1);
    assert(c.reportSafeIndex(34, 38) == -1);
    assert(c.reportSafeIndex(34, 39) == -1);
    assert(c.reportSafeIndex(34, 40) == -1);
    assert(c.reportSafeIndex(34, 41) == -1);
    assert(c.reportSafeIndex(35, -5) == -1);
    assert(c.reportSafeIndex(35, -4) == -1);
    assert(c.reportSafeIndex(35, -3) == -1);
    assert(c.reportSafeIndex(35, -2) == -1);
    assert(c.reportSafeIndex(35, -1) == -1);
    assert(c.reportSafeIndex(35, 0) == -1);
    assert(c.reportSafeIndex(35, 1) == -1);
    assert(c.reportSafeIndex(35, 2) == -1);
    assert(c.reportSafeIndex(35, 3) == -1);
    assert(c.reportSafeIndex(35, 4) == -1);
    assert(c.reportSafeIndex(35, 5) == -1);
    assert(c.reportSafeIndex(35, 6) == -1);
    assert(c.reportSafeIndex(35, 7) == -1);
    assert(c.reportSafeIndex(35, 8) == -1);
    assert(c.reportSafeIndex(35, 9) == -1);
    assert(c.reportSafeIndex(35, 10) == -1);
    assert(c.reportSafeIndex(35, 11) == -1);
    assert(c.reportSafeIndex(35, 12) == -1);
    assert(c.reportSafeIndex(35, 13) == -1);
    assert(c.reportSafeIndex(35, 14) == -1);
    assert(c.reportSafeIndex(35, 15) == -1);
    assert(c.reportSafeIndex(35, 16) == -1);
    assert(c.reportSafeIndex(35, 17) == -1);
    assert(c.reportSafeIndex(35, 18) == -1);
    assert(c.reportSafeIndex(35, 19) == -1);
    assert(c.reportSafeIndex(35, 20) == -1);
    assert(c.reportSafeIndex(35, 21) == -1);
    assert(c.reportSafeIndex(35, 22) == -1);
    assert(c.reportSafeIndex(35, 23) == -1);
    assert(c.reportSafeIndex(35, 24) == -1);
    assert(c.reportSafeIndex(35, 25) == -1);
    assert(c.reportSafeIndex(35, 26) == -1);
    assert(c.reportSafeIndex(35, 27) == -1);
    assert(c.reportSafeIndex(35, 28) == -1);
    assert(c.reportSafeIndex(35, 29) == -1);
    assert(c.reportSafeIndex(35, 30) == -1);
    assert(c.reportSafeIndex(35, 31) == -1);
    assert(c.reportSafeIndex(35, 32) == -1);
    assert(c.reportSafeIndex(35, 33) == -1);
    assert(c.reportSafeIndex(35, 34) == -1);
    assert(c.reportSafeIndex(35, 35) == -1);
    assert(c.reportSafeIndex(35, 36) == -1);
    assert(c.reportSafeIndex(35, 37) == -1);
    assert(c.reportSafeIndex(35, 38) == -1);
    assert(c.reportSafeIndex(35, 39) == -1);
    assert(c.reportSafeIndex(35, 40) == -1);
    assert(c.reportSafeIndex(35, 41) == -1);
    assert(c.reportSafeIndex(36, -5) == -1);
    assert(c.reportSafeIndex(36, -4) == -1);
    assert(c.reportSafeIndex(36, -3) == -1);
    assert(c.reportSafeIndex(36, -2) == -1);
    assert(c.reportSafeIndex(36, -1) == -1);
    assert(c.reportSafeIndex(36, 0) == -1);
    assert(c.reportSafeIndex(36, 1) == -1);
    assert(c.reportSafeIndex(36, 2) == -1);
    assert(c.reportSafeIndex(36, 3) == -1);
    assert(c.reportSafeIndex(36, 4) == -1);
    assert(c.reportSafeIndex(36, 5) == -1);
    assert(c.reportSafeIndex(36, 6) == -1);
    assert(c.reportSafeIndex(36, 7) == -1);
    assert(c.reportSafeIndex(36, 8) == -1);
    assert(c.reportSafeIndex(36, 9) == -1);
    assert(c.reportSafeIndex(36, 10) == -1);
    assert(c.reportSafeIndex(36, 11) == -1);
    assert(c.reportSafeIndex(36, 12) == -1);
    assert(c.reportSafeIndex(36, 13) == -1);
    assert(c.reportSafeIndex(36, 14) == -1);
    assert(c.reportSafeIndex(36, 15) == -1);
    assert(c.reportSafeIndex(36, 16) == -1);
    assert(c.reportSafeIndex(36, 17) == -1);
    assert(c.reportSafeIndex(36, 18) == -1);
    assert(c.reportSafeIndex(36, 19) == -1);
    assert(c.reportSafeIndex(36, 20) == -1);
    assert(c.reportSafeIndex(36, 21) == -1);
    assert(c.reportSafeIndex(36, 22) == -1);
    assert(c.reportSafeIndex(36, 23) == -1);
    assert(c.reportSafeIndex(36, 24) == -1);
    assert(c.reportSafeIndex(36, 25) == -1);
    assert(c.reportSafeIndex(36, 26) == -1);
    assert(c.reportSafeIndex(36, 27) == -1);
    assert(c.reportSafeIndex(36, 28) == -1);
    assert(c.reportSafeIndex(36, 29) == -1);
    assert(c.reportSafeIndex(36, 30) == -1);
    assert(c.reportSafeIndex(36, 31) == -1);
    assert(c.reportSafeIndex(36, 32) == -1);
    assert(c.reportSafeIndex(36, 33) == -1);
    assert(c.reportSafeIndex(36, 34) == -1);
    assert(c.reportSafeIndex(36, 35) == -1);
    assert(c.reportSafeIndex(36, 36) == -1);
    assert(c.reportSafeIndex(36, 37) == -1);
    assert(c.reportSafeIndex(36, 38) == -1);
    assert(c.reportSafeIndex(36, 39) == -1);
    assert(c.reportSafeIndex(36, 40) == -1);
    assert(c.reportSafeIndex(36, 41) == -1);
    assert(c.reportSafeIndex(37, -5) == -1);
    assert(c.reportSafeIndex(37, -4) == -1);
    assert(c.reportSafeIndex(37, -3) == -1);
    assert(c.reportSafeIndex(37, -2) == -1);
    assert(c.reportSafeIndex(37, -1) == -1);
    assert(c.reportSafeIndex(37, 0) == -1);
    assert(c.reportSafeIndex(37, 1) == -1);
    assert(c.reportSafeIndex(37, 2) == -1);
    assert(c.reportSafeIndex(37, 3) == -1);
    assert(c.reportSafeIndex(37, 4) == -1);
    assert(c.reportSafeIndex(37, 5) == -1);
    assert(c.reportSafeIndex(37, 6) == -1);
    assert(c.reportSafeIndex(37, 7) == -1);
    assert(c.reportSafeIndex(37, 8) == -1);
    assert(c.reportSafeIndex(37, 9) == -1);
    assert(c.reportSafeIndex(37, 10) == -1);
    assert(c.reportSafeIndex(37, 11) == -1);
    assert(c.reportSafeIndex(37, 12) == -1);
    assert(c.reportSafeIndex(37, 13) == -1);
    assert(c.reportSafeIndex(37, 14) == -1);
    assert(c.reportSafeIndex(37, 15) == -1);
    assert(c.reportSafeIndex(37, 16) == -1);
    assert(c.reportSafeIndex(37, 17) == -1);
    assert(c.reportSafeIndex(37, 18) == -1);
    assert(c.reportSafeIndex(37, 19) == -1);
    assert(c.reportSafeIndex(37, 20) == -1);
    assert(c.reportSafeIndex(37, 21) == -1);
    assert(c.reportSafeIndex(37, 22) == -1);
    assert(c.reportSafeIndex(37, 23) == -1);
    assert(c.reportSafeIndex(37, 24) == -1);
    assert(c.reportSafeIndex(37, 25) == -1);
    assert(c.reportSafeIndex(37, 26) == -1);
    assert(c.reportSafeIndex(37, 27) == -1);
    assert(c.reportSafeIndex(37, 28) == -1);
    assert(c.reportSafeIndex(37, 29) == -1);
    assert(c.reportSafeIndex(37, 30) == -1);
    assert(c.reportSafeIndex(37, 31) == -1);
    assert(c.reportSafeIndex(37, 32) == -1);
    assert(c.reportSafeIndex(37, 33) == -1);
    assert(c.reportSafeIndex(37, 34) == -1);
    assert(c.reportSafeIndex(37, 35) == -1);
    assert(c.reportSafeIndex(37, 36) == -1);
    assert(c.reportSafeIndex(37, 37) == -1);
    assert(c.reportSafeIndex(37, 38) == -1);
    assert(c.reportSafeIndex(37, 39) == -1);
    assert(c.reportSafeIndex(37, 40) == -1);
    assert(c.reportSafeIndex(37, 41) == -1);
    assert(c.reportSafeIndex(38, -5) == -1);
    assert(c.reportSafeIndex(38, -4) == -1);
    assert(c.reportSafeIndex(38, -3) == -1);
    assert(c.reportSafeIndex(38, -2) == -1);
    assert(c.reportSafeIndex(38, -1) == -1);
    assert(c.reportSafeIndex(38, 0) == -1);
    assert(c.reportSafeIndex(38, 1) == -1);
    assert(c.reportSafeIndex(38, 2) == -1);
    assert(c.reportSafeIndex(38, 3) == -1);
    assert(c.reportSafeIndex(38, 4) == -1);
    assert(c.reportSafeIndex(38, 5) == -1);
    assert(c.reportSafeIndex(38, 6) == -1);
    assert(c.reportSafeIndex(38, 7) == -1);
    assert(c.reportSafeIndex(38, 8) == -1);
    assert(c.reportSafeIndex(38, 9) == -1);
    assert(c.reportSafeIndex(38, 10) == -1);
    assert(c.reportSafeIndex(38, 11) == -1);
    assert(c.reportSafeIndex(38, 12) == -1);
    assert(c.reportSafeIndex(38, 13) == -1);
    assert(c.reportSafeIndex(38, 14) == -1);
    assert(c.reportSafeIndex(38, 15) == -1);
    assert(c.reportSafeIndex(38, 16) == -1);
    assert(c.reportSafeIndex(38, 17) == -1);
    assert(c.reportSafeIndex(38, 18) == -1);
    assert(c.reportSafeIndex(38, 19) == -1);
    assert(c.reportSafeIndex(38, 20) == -1);
    assert(c.reportSafeIndex(38, 21) == -1);
    assert(c.reportSafeIndex(38, 22) == -1);
    assert(c.reportSafeIndex(38, 23) == -1);
    assert(c.reportSafeIndex(38, 24) == -1);
    assert(c.reportSafeIndex(38, 25) == -1);
    assert(c.reportSafeIndex(38, 26) == -1);
    assert(c.reportSafeIndex(38, 27) == -1);
    assert(c.reportSafeIndex(38, 28) == -1);
    assert(c.reportSafeIndex(38, 29) == -1);
    assert(c.reportSafeIndex(38, 30) == -1);
    assert(c.reportSafeIndex(38, 31) == -1);
    assert(c.reportSafeIndex(38, 32) == -1);
    assert(c.reportSafeIndex(38, 33) == -1);
    assert(c.reportSafeIndex(38, 34) == -1);
    assert(c.reportSafeIndex(38, 35) == -1);
    assert(c.reportSafeIndex(38, 36) == -1);
    assert(c.reportSafeIndex(38, 37) == -1);
    assert(c.reportSafeIndex(38, 38) == -1);
    assert(c.reportSafeIndex(38, 39) == -1);
    assert(c.reportSafeIndex(38, 40) == -1);
    assert(c.reportSafeIndex(38, 41) == -1);
    assert(c.reportSafeIndex(39, -5) == -1);
    assert(c.reportSafeIndex(39, -4) == -1);
    assert(c.reportSafeIndex(39, -3) == -1);
    assert(c.reportSafeIndex(39, -2) == -1);
    assert(c.reportSafeIndex(39, -1) == -1);
    assert(c.reportSafeIndex(39, 0) == -1);
    assert(c.reportSafeIndex(39, 1) == -1);
    assert(c.reportSafeIndex(39, 2) == -1);
    assert(c.reportSafeIndex(39, 3) == -1);
    assert(c.reportSafeIndex(39, 4) == -1);
    assert(c.reportSafeIndex(39, 5) == -1);
    assert(c.reportSafeIndex(39, 6) == -1);
    assert(c.reportSafeIndex(39, 7) == -1);
    assert(c.reportSafeIndex(39, 8) == -1);
    assert(c.reportSafeIndex(39, 9) == -1);
    assert(c.reportSafeIndex(39, 10) == -1);
    assert(c.reportSafeIndex(39, 11) == -1);
    assert(c.reportSafeIndex(39, 12) == -1);
    assert(c.reportSafeIndex(39, 13) == -1);
    assert(c.reportSafeIndex(39, 14) == -1);
    assert(c.reportSafeIndex(39, 15) == -1);
    assert(c.reportSafeIndex(39, 16) == -1);
    assert(c.reportSafeIndex(39, 17) == -1);
    assert(c.reportSafeIndex(39, 18) == -1);
    assert(c.reportSafeIndex(39, 19) == -1);
    assert(c.reportSafeIndex(39, 20) == -1);
    assert(c.reportSafeIndex(39, 21) == -1);
    assert(c.reportSafeIndex(39, 22) == -1);
    assert(c.reportSafeIndex(39, 23) == -1);
    assert(c.reportSafeIndex(39, 24) == -1);
    assert(c.reportSafeIndex(39, 25) == -1);
    assert(c.reportSafeIndex(39, 26) == -1);
    assert(c.reportSafeIndex(39, 27) == -1);
    assert(c.reportSafeIndex(39, 28) == -1);
    assert(c.reportSafeIndex(39, 29) == -1);
    assert(c.reportSafeIndex(39, 30) == -1);
    assert(c.reportSafeIndex(39, 31) == -1);
    assert(c.reportSafeIndex(39, 32) == -1);
    assert(c.reportSafeIndex(39, 33) == -1);
    assert(c.reportSafeIndex(39, 34) == -1);
    assert(c.reportSafeIndex(39, 35) == -1);
    assert(c.reportSafeIndex(39, 36) == -1);
    assert(c.reportSafeIndex(39, 37) == -1);
    assert(c.reportSafeIndex(39, 38) == -1);
    assert(c.reportSafeIndex(39, 39) == -1);
    assert(c.reportSafeIndex(39, 40) == -1);
    assert(c.reportSafeIndex(39, 41) == -1);
    assert(c.reportSafeIndex(40, -5) == -1);
    assert(c.reportSafeIndex(40, -4) == -1);
    assert(c.reportSafeIndex(40, -3) == -1);
    assert(c.reportSafeIndex(40, -2) == -1);
    assert(c.reportSafeIndex(40, -1) == -1);
    assert(c.reportSafeIndex(40, 0) == -1);
    assert(c.reportSafeIndex(40, 1) == -1);
    assert(c.reportSafeIndex(40, 2) == -1);
    assert(c.reportSafeIndex(40, 3) == -1);
    assert(c.reportSafeIndex(40, 4) == -1);
    assert(c.reportSafeIndex(40, 5) == -1);
    assert(c.reportSafeIndex(40, 6) == -1);
    assert(c.reportSafeIndex(40, 7) == -1);
    assert(c.reportSafeIndex(40, 8) == -1);
    assert(c.reportSafeIndex(40, 9) == -1);
    assert(c.reportSafeIndex(40, 10) == -1);
    assert(c.reportSafeIndex(40, 11) == -1);
    assert(c.reportSafeIndex(40, 12) == -1);
    assert(c.reportSafeIndex(40, 13) == -1);
    assert(c.reportSafeIndex(40, 14) == -1);
    assert(c.reportSafeIndex(40, 15) == -1);
    assert(c.reportSafeIndex(40, 16) == -1);
    assert(c.reportSafeIndex(40, 17) == -1);
    assert(c.reportSafeIndex(40, 18) == -1);
    assert(c.reportSafeIndex(40, 19) == -1);
    assert(c.reportSafeIndex(40, 20) == -1);
    assert(c.reportSafeIndex(40, 21) == -1);
    assert(c.reportSafeIndex(40, 22) == -1);
    assert(c.reportSafeIndex(40, 23) == -1);
    assert(c.reportSafeIndex(40, 24) == -1);
    assert(c.reportSafeIndex(40, 25) == -1);
    assert(c.reportSafeIndex(40, 26) == -1);
    assert(c.reportSafeIndex(40, 27) == -1);
    assert(c.reportSafeIndex(40, 28) == -1);
    assert(c.reportSafeIndex(40, 29) == -1);
    assert(c.reportSafeIndex(40, 30) == -1);
    assert(c.reportSafeIndex(40, 31) == -1);
    assert(c.reportSafeIndex(40, 32) == -1);
    assert(c.reportSafeIndex(40, 33) == -1);
    assert(c.reportSafeIndex(40, 34) == -1);
    assert(c.reportSafeIndex(40, 35) == -1);
    assert(c.reportSafeIndex(40, 36) == -1);
    assert(c.reportSafeIndex(40, 37) == -1);
    assert(c.reportSafeIndex(40, 38) == -1);
    assert(c.reportSafeIndex(40, 39) == -1);
    assert(c.reportSafeIndex(40, 40) == -1);
    assert(c.reportSafeIndex(40, 41) == -1);
    assert(c.reportSafeIndex(0, -5) == -1);
    assert(c.reportSafeIndex(1, 41) == -1);
    assert(c.reportSafeIndex(18, 37) == 10);
    assert(c.reportSafeIndex(13, 30) == 12);
    assert(c.reportSafeIndex(14, 3) == 1);
    assert(c.reportSafeIndex(14, 24) == 10);
    assert(c.reportSafeIndex(20, 9) == 5);
    return 0;
}
