1#include"../kyopro_library/data_structure/fenwick_tree.hpp"
2#include"../kyopro_library/data_structure/fenwick_tree_abel.hpp"
3#include"../kyopro_library/data_structure/segtree.hpp"
4#include"../kyopro_library/data_structure/segtree_lazy.hpp"
5#include"../kyopro_library/data_structure/segtree_dual.hpp"
6#include"../kyopro_library/graph/dsu.hpp"
7#include"../kyopro_library/others/int128.hpp"
8#include"../atcoder/modint"
9#include"../atcoder/segtree"
10#include"../atcoder/lazysegtree"
11#include"../atcoder/fenwicktree"
12#include"../atcoder/dsu"
16template<
typename T, T(*op)(T,T), T(*e)()>
18template<
typename T, T(*op)(T,T), T(*e)(),
typename F, T(*mapping)(F,T), F(*composition)(F,F), F(*id)()>
19ostream&
operator<<(ostream& os, atcoder::lazy_segtree<T,op,e,F,mapping,composition,id> a);
22template<
typename T1,
typename T2>
24template<
typename T1,
typename T2,
typename T3>
26template<
typename T1,
typename T2,
typename T3,
typename T4>
40template<
typename T1,
typename T2>
48template<
typename T,
auto N>
55template<
typename T,
typename U,
auto M>
70template<
typename T, T(*op)(T,T), T(*e)()>
74 for(
int i=0; i<n; i++) {
81template<
typename T, T(*op)(T,T), T(*e)(),
typename F, T(*mapping)(F,T), F(*composition)(F,F), F(*id)()>
82ostream&
operator<<(ostream& os, atcoder::lazy_segtree<T,op,e,F,mapping,composition,id> a) {
85 for(
int i=0; i<n; i++) {
96 for(
int i=0; i<n; i++) {
103template<
typename T1,
typename T2>
105 os<<
"("<<p.first<<
","<<p.second<<
")";
108template<
typename T1,
typename T2,
typename T3>
110 os<<
"("<<get<0>(t)<<
","<<get<1>(t)<<
","<<get<2>(t)<<
")";
113template<
typename T1,
typename T2,
typename T3,
typename T4>
115 os<<
"("<<get<0>(t)<<
","<<get<1>(t)<<
","<<get<2>(t)<<
","<<get<3>(t)<<
")";
122 for(
int i=0; i<I; i++) {
125 for(
int j=0; j<J; j++) {
127 int K=a[i][j].size();
128 for(
int k=0; k<K; k++) {
143 for(
int i=0; i<I; i++) {
146 for(
int j=0; j<J; j++) {
159 for(
int i=0; i<n; i++) {
170 for(T x:a) os<<x<<
",";
178 for(T x:a) os<<x<<
",";
186 for(T x:a) os<<x<<
",";
190template<
typename T1,
typename T2>
193 for(pair<T1,T2> x:a) os<<x<<
",";
220
221
222
223
224
225
226
227
228
229
230template<
typename T,
auto N>
233 for(
int i=0; i<N; i++) {
243 for(
int i=0; i<n; i++) {
254 for(
int i=0; i<n; i++) {
265 for(
int i=0; i<n; i++) {
272template<
typename T,
typename U,
auto M>
276 for(
int i=0; i<n; i++) {
287 for(
int i=0; i<n; i++) {
295 vector<vector<
int>> group=a.groups();
300 vector<vector<
int>> group=a.groups();
305#define print_line cerr<<"--------------------"<<__LINE__<<"--------------------"<<endl;
306#define debug(...) DebugPrint(0
,#__VA_ARGS__,__VA_ARGS__)
307#define getName(VariableName) #VariableName
311template<
typename T1,
typename T2,
typename...T3>
312void DebugPrint(
int i,
const T1& name,
const T2& a,
const T3& ...b) {
316 if(name[i]==
'\0')
break;
317 if(tmp==0&&name[i]==
',')
break;
319 if(name[i]==
'(') tmp++;
320 else if(name[i]==
')') tmp--;
326 DebugPrint(i+1,name,b...);
ostream & operator<<(ostream &os, FenwickTreeAbel< T > a)
ostream & operator<<(ostream &os, SegTree< T > a)
ostream & operator<<(ostream &os, FenwickTree a)
ostream & operator<<(ostream &os, SegTreeDual< T > a)
ostream & operator<<(ostream &os, atcoder::segtree< T, op, e > a)
ostream & operator<<(ostream &os, const pair< T1, T2 > &p)
ostream & operator<<(ostream &os, SegTreeLazy< T, U, M > a)
ostream & operator<<(ostream &os, const tuple< T1, T2, T3, T4 > &t)
ostream & operator<<(ostream &os, atcoder::modint998244353 a)
ostream & operator<<(ostream &os, array< T, N > a)
void DebugPrint(int i, T name)
ostream & operator<<(ostream &os, atcoder::lazy_segtree< T, op, e, F, mapping, composition, id > a)
ostream & operator<<(ostream &os, const tuple< T1, T2, T3 > &t)
ostream & operator<<(ostream &os, DSU a)
void DebugPrint(int i, const T1 &name, const T2 &a, const T3 &...b)
ostream & operator<<(ostream &os, atcoder::fenwick_tree< T > a)
ostream & operator<<(ostream &os, const vector< vector< vector< T > > > &a)