Насер дає вам сітку з рядків та стовпців, яка містить цілі числа.
Вам потрібно вибрати стовпець (1 \le c < m), щоб розділити сітку на дві частини:
Ліва частина: стовпці з до (включно).
Права частина: стовпці з c+1 до (включно).
Дві клітинки вважаються сусідніми, якщо вони мають спільну сторону (зверху, знизу, зліва або справа). Дві сусідні клітинки, що лежать в одній частині, вважаються з'єднаними, якщо вони містять рівні значення. Компонента зв'язності — це максимальна за включенням група клітинок, у якій від будь-якої клітинки можна дістатися до будь-якої іншої через ланцюжок з'єднаних сусідніх клітинок.
Наприклад, у сітці:
Якщо ми розділимо її за стовпцем c=1, то ліва частина буде такою:
Найбільша компонента зв'язності в лівій частині має розмір (дві клітинки зі значенням ). Права частина:
Найбільша компонента зв'язності у правій частині має розмір (чотири клітинки зі значенням ).
Нехай — розмір найбільшої компоненти зв'язності в лівій частині, а — розмір найбільшої компоненти зв'язності у правій частині.
Ваше завдання — вибрати стовпець так, щоб мінімізувати |L - R|.
У наведеному вище прикладі, якщо вибрати c=1, то L=2, R=4 і |L-R|=2. Якщо вибрати c=2, то та обчислюються для нового розбиття, і ми беремо мінімум за всіма варіантами вибору .
Кожен тест містить декілька тестових випадків. Перший рядок містить одне ціле число (1 \le t \le 10^4) — кількість тестових випадків. Далі йде опис тестових випадків.
Перший рядок кожного тестового випадку містить два цілих числа та (1 \le n, 2 \le m, n \cdot m \le 2 \cdot 10^5) — кількість рядків та стовпців.
Кожен з наступних рядків містить цілих чисел a_{i,1}, a_{i,2}, \ldots, a_{i,m} (1 \le a_{i,j} \le 10^9) — елементи сітки.
Гарантується, що сума n \cdot m за всіма тестовими випадками не перевищує 2 \cdot 10^5.
Для кожного тестового випадку виведіть одне ціле число — мінімальне можливе значення |L - R|.
Приклад 1
Підзадача ( балів) : (n = 1)
Підзадача ( балів) : (m \le 50)
Підзадача ( балів) : Без додаткових обмежень.