eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

Ночь в библиотеке

Ночь в библиотеке

Однажды летом Вовочка проходил в школьной библиотеке "летнюю практику": чинил учебники, помогал библиотекарям сортировать книги по отделам и тому подобное. У Вовочки очень длинный нос, который он вечно сует куда не следует, и библиотечные книги не стали исключением. В одной из книг он увидел следующее: … обозначаемый через \textbf{D(M)} --- кососимметричная полилинейная нормированная функция столбцов квадратной матрицы, т.е.: 1. Если поменять местами два столбца матрицы, его значение меняет знак: \includegraphics{https://static.e-olymp.com/content/a0/a031c2b2930ecd819e6b6b75a350e838bfa9305c.jpg} 2. Если один из столбцов матрицы является линейной комбинацией двух векторов, то линейную комбинацию можно вынести: \includegraphics{https://static.e-olymp.com/content/b8/b8616ee71d2610de4c268e928a96788f955a4af8.jpg} 3. Для единичной матрицы он равен единице: \includegraphics{https://static.e-olymp.com/content/a2/a25a5ac5cd01aaada9556f8e848775270b72b95e.jpg} Докажем, что такая функция единственна: … (\textit{Вовочка читает книги обрывками}) … … например, методом исключения Гаусса. … (\textit{иногда совсем маленькими}) … … матрица \textbf{X} является произведением столбца \textbf{u} на строку \textbf{v}, т.е.: \includegraphics{https://static.e-olymp.com/content/73/73ff9bcc17c241bd4ac8c9ae465969e0f45df9dd.jpg} Вовочку очень заинтересовало то, что он прочитал. Поскольку Вовочка увлекается олимпиадным программированием (т.е. зависает на сайте "Кодефорсес"), то матрицы и векторы ему не страшны. Однако с математикой у него туго. Он хочет посчитать значение описанной кососимметричной полилинейной нормированной функции \textbf{D} для матрицы \textbf{X}, определённой в последнем отрывке. Для простоты все элементы векторов \textbf{u} и \textbf{v} являются целыми числами. Что-то подсказывает Вовочке, что ответ также будет целым. Ну а поскольку есть подозрения, что ответ может быть очень большим, то Вовочка хочет научиться находить его по модулю простого числа \textbf{P} (просто так принято). Помогите Вовочке решить задачу. Иначе спам на вышеупомянутом сайте обеспечен. \InputFile Первая строка содержит два целых числа \textbf{N} и \textbf{P} (\textbf{1} ≤ \textbf{N} ≤ \textbf{100}, \textbf{2} ≤ \textbf{P} ≤ \textbf{2·10^9}). Гарантируется, что \textbf{P} --- простое число. Вторая строка содержит \textbf{N} целых чисел \textbf{u_1}, \textbf{u_2}, …, \textbf{u_n} --- элементы вектора-столбца \textbf{u}, а третья строка содержит\textbf{N} целых чисел \textbf{v_1}, \textbf{v_2}, …, \textbf{v_n} --- элементы вектора-строки \textbf{v} (\textbf{0} ≤ \textbf{u_i}, \textbf{v_j} < \textbf{P}). \OutputFile Требуется вывести одно целое число: значение \textbf{D(X)} по модулю \textbf{P}. Число должно быть неотрицательным и строго меньше, чем \textbf{P}.
Лимит времени 1 секунда
Лимит использования памяти 64 MiB
Входные данные #1
3 11
0 7 8
10 5 3
Выходные данные #1
0
Источник Очный тур XIII Открытой Всесибирской олимпиады по программированию имени И.В. Поттосина