维护序列
题号:NC237669
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

你要维护两个长度为 n 的序列 a,b,支持以下操作:

l r k,表示对于每个 执行 k 次以下操作:交换 a_i,b_i,然后 a_i 变为

操作共 m 次。

在所有操作结束后输出序列 a,b 对 1000000007 取模的结果。

输入描述:

第一行两个整数n,m。

接下来一行n个整数表示序列a。

接下来一行n个整数表示序列b。

接下来m行表示操作。

输出描述:

输出两行。

第一行n个整数表示操作后的序列a。

第二行n个整数表示操作后的序列b。

示例1

输入

复制
5 5
1 2 3 4 5
6 7 8 9 10
1 2 5
2 4 8
3 5 9
2 3 10
1 4 2

输出

复制
99 767961 6609952 64689 615 
61 474626 4085175 39980 380