时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
            空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
             64bit IO Format: %lld
        
     
    题目描述
        
        
    
            
            给你一棵根为1的有N个节点的树,以及Q次操作。
 每次操作诸如:
 1 x y:将节点x所在的子树的所有节点的权值加上y
 2 x:询问x所在子树的所有节点的权值的平方和,答案模23333后输出
                            输入描述:
                                                    第一行两个整数N,Q
第二行N个整数,第i个表示节点i的初始权值
接下来N-1行每行两个整数u,v,表示u和v之间存在一条树边
接下来Q行每行一个操作,格式如题目描述
                                                                            输出描述:
                                                    对于每个询问操作,输出一行一个整数,表示答案在模23333后的结果
                                                                            
                        
                            示例1
                        
                        
                            
                                输入
                                复制
                                
                                
                                    5 5
0 0 0 0 0
1 2
1 3
3 4
3 5
1 1 3
1 3 7
1 4 5
1 5 6
2 1
                                 
                             
                            
                                                     
                     
                                                        备注:
                1. 数据范围
一共有10个测试点,对于第i个测试点保证,N=10000 x i
对于

的数据,有1 ≤ N,Q,y ≤ 10
5,1 ≤ x ≤ N
2. 注
平方和的意思是:a
2+b
2+c
2%5E2)
是
和的平方