Добрый вечер!
А что с программой? Работает; не работает (как именно); то работает, то не работает? Как вы её проверяли? Какие у вас предположения?
Как это делается в природе: нарисуйте на бумаге эту матрицу (желательно рассмотреть все возможные размеры, но их счётное число, так что для начала можно попробовать матрицу

) и заполните клетки парами индексов, им соответствующих. Теперь поверните и посмотрите, что получается и как индексы элементов новой таблица связаны с индексами тех же элементов старой.