Description:


一棵 \(n\) 个点的树,每个点的初始权值为1。对于这棵树有 \(q\) 个操作,每个操作为以下四种操作之一:

  • \(+\ u\ v\ c\) :将 \(u\)\(v\) 的路径上的点的权值都加上自然数 \(c\)
  • \(-\ u_1\ v_1\ u_2\ v_2\) :将树中原有的边 \((u_1,v_1)\) 删除,加入一条新边 \((u_2,v_2)\) ,保证操作完之后仍然是一棵树;
  • \(*\ u\ v\ c\) :将 \(u\)\(v\) 的路径上的点的权值都乘上自然数 \(c\)
  • \(/\ u\ v\) :询问 \(u\)\(v\) 的路径上的点的权值和,求出答案对于 \(51061\) 的余数。

Input:


第一行两个整数 \(n\)\(q\)

接下来 \(n-1\) 行每行两个正整数 \(u\)\(v\) ,描述这棵树。

接下来 \(q\) 行,每行描述一个操作。

Output:


对于每个/对应的答案输出一行。

Sample Input:


Sample Output:


题解:


很久没有写过LCT了,写一个来练手,结果耗了一晚上时间。

注意Splay同时维护加标记和乘标记时应先下传乘标记然后下传加标记。