Здравствуйте, появилась проблема, при которой код работает как надо, но выдает после выполнения ошибку о том, что компилятор пытается обратиться к -1 элементу массива.  При изменении -1 на 0 в цикле, или >= 0, программа выполняется не так, как надо. 
Коротко говоря, суть задачи в том, чтобы передвинуть двумерный массив на N позиций вправо. 
Можно ли как-то исправить код без переписывания и использования других решений? Оставив цикл и swap. Заранее благодарю за решение
srand(time(NULL));
int arr[3][6], num{0};
    for (int i{ 0 }; i < 3; i++) {
        for (int j{ 0 }; j < 6; j++) {
            arr[i][j] = rand() % 20 + 1;
            cout << arr[i][j] << "\t";
        }
        cout << endl;
    }
    cout << "Введите на сколько позиций сдвинуть: ";
    cin >> num;
    for (int i{0}; i < num; i++) {
        int temp = arr[2][5];
        for (int i{ 2 }; i > -1; i--) {
            for (int j{ 5 }; j > -1; j--) {
                swap(arr[i][j], arr[i][j - 1]);
            }
            if (i == 0) {
                arr[0][0] = temp;
                break;
            }
        }
    }
    for (int i{ 0 }; i < 3; i++) {
        for (int j{ 0 }; j < 6; j++) {
            cout << arr[i][j] << "\t";
        }
        cout << endl;
    }