SegTree Merge(SegTree F, SegTree T) { if (F.size >= T.size) { long FT = T.AddRight(F); long TF = T.AddLeft(F); F.c1 = (F.c1 + T.c1 + FT) % Define.mod; F.c2 = (F.c2 + T.c2 + FT + TF) % Define.mod; T.Add(F); return(F); } else { long FT = F.AddLeft(T); long TF = F.AddRight(T); T.c1 = (F.c1 + T.c1 + FT) % Define.mod; T.c2 = (F.c2 + T.c2 + FT + TF) % Define.mod; F.Add(T); return(T); } }