Олимпиадный тренинг

Задача . C. Sanae и гигантский робот


Sanae сделала гигантского робота — Hisoutensoku, но с ним что-то не так. Что еще хуже, Sanae, кажется, не может понять, как его остановить, и она вынуждена исправлять это на лету.

Состояние робота можно представить массивом целых чисел длины \(n\). Изначально робот находится в состоянии \(a\). Она хочет превратить его в состояние \(b\).

Как отличный программист, Sanae владеет искусством копирования и вставки. За одну операцию она может выбрать некоторый отрезок из заданных отрезков, скопировать этот отрезок из \(b\) и вставить его в то же место робота, заменив исходное состояние на этих позициях. Однако она должна следить за тем, чтобы сумма \(a\) не менялась после каждой операции копирования на случай, если робот выйдет из строя. Формально Sanae может выбрать отрезок \([l,r]\) и сделать \(a_i = b_i\) (\(l\le i\le r\)), если \(\sum\limits_{i=1}^n a_i\) не изменится после применения операции.

Определите, может ли Sanae успешно перевести робота из начального состояния \(a\) в желаемое состояние \(b\) с помощью любых (возможно, ноль) операций.

Входные данные

Первая строка содержит единственное целое число \(t\) (\(1 \leq t \leq 2\cdot 10^4\)) — количество наборов входных данных. Далее следуют описания наборов входных данных.

Первая строка каждого набора входных данных содержит два целых числа \(n\), \(m\) (\(2 \leq n\leq 2\cdot 10^5\), \(1 \leq m\leq 2\cdot 10^5\)) — длина \(a\), \(b\) и количество отрезков.

Вторая строка содержит \(n\) целых чисел \(a_1,a_2,\ldots,a_n\) (\(1 \leq a_i \leq 10^9\)) — начальное состояние \(a\).

Третья строка содержит \(n\) целых чисел \(b_1,b_2,\ldots,b_n\) (\(1 \leq b_i \leq 10^9\)) — искомое состояние \(b\).

Затем следуют \(m\) строк, \(i\)-я строка содержит два целых числа \(l_i,r_i\) (\(1 \leq l_i < r_i \leq n\)) — отрезки, которые Sanae может скопировать и вставить.

Гарантируется, что сумма \(n\) и сумма \(m\) по всем наборам входных данных не превосходит \(2 \cdot 10 ^ 5\).

Выходные данные

Для каждого теста выведите «YES» (без кавычек), если \(a\) можно превратить в \(b\), или «NO» (без кавычек) в противном случае.

Вы можете вывести «YES» и «NO» в любом регистре (например, строки «yEs», «yes» и «Yes» являются правильным ответом).

Примечание

В первом наборе входных данных один из возможных способов превратить \(a\) в \(b\):

Сначала выберите \([1,3]\). После операции \(a=[3,2,5,2,3]\).

Затем выберите \([2,5]\). После операции \(a=[3,2,5,4,1]=b\).

Во втором наборе входных данных можно показать, что невозможно превратить \(a\) в \(b\).


Примеры
Входные данныеВыходные данные
1 2
5 2
1 5 4 2 3
3 2 5 4 1
1 3
2 5
5 2
1 5 4 2 3
3 2 4 5 1
1 2
2 4
YES
NO

time 1000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w641
Комментарий учителя