1#include"../kyopro_library/data_structure/fenwick_tree.hpp"
2#include"../kyopro_library/data_structure/segtree.hpp"
3#include"../kyopro_library/data_structure/segtree_lazy.hpp"
4#include"../kyopro_library/data_structure/segtree_dual.hpp"
5#include"../kyopro_library/graph/dsu.hpp"
6#include"../kyopro_library/others/int128.hpp"
7#include"../atcoder/modint"
8#include"../atcoder/segtree"
9#include"../atcoder/lazysegtree"
10#include"../atcoder/fenwicktree"
11#include"../atcoder/dsu"
15template<
typename T, T(*op)(T,T), T(*e)()>
17template<
typename T, T(*op)(T,T), T(*e)(),
typename F, T(*mapping)(F,T), F(*composition)(F,F), F(*id)()>
18ostream&
operator<<(ostream& os, atcoder::lazy_segtree<T,op,e,F,mapping,composition,id> a);
21template<
typename T1,
typename T2>
23template<
typename T1,
typename T2,
typename T3>
25template<
typename T1,
typename T2,
typename T3,
typename T4>
39template<
typename T1,
typename T2>
47template<
typename T,
auto N>
52template<
typename T,
typename U,
auto M>
67template<
typename T, T(*op)(T,T), T(*e)()>
71 for(
int i=0; i<n; i++) {
78template<
typename T, T(*op)(T,T), T(*e)(),
typename F, T(*mapping)(F,T), F(*composition)(F,F), F(*id)()>
79ostream&
operator<<(ostream& os, atcoder::lazy_segtree<T,op,e,F,mapping,composition,id> a) {
82 for(
int i=0; i<n; i++) {
93 for(
int i=0; i<n; i++) {
100template<
typename T1,
typename T2>
102 os<<
"("<<p.first<<
","<<p.second<<
")";
105template<
typename T1,
typename T2,
typename T3>
107 os<<
"("<<get<0>(t)<<
","<<get<1>(t)<<
","<<get<2>(t)<<
")";
110template<
typename T1,
typename T2,
typename T3,
typename T4>
112 os<<
"("<<get<0>(t)<<
","<<get<1>(t)<<
","<<get<2>(t)<<
","<<get<3>(t)<<
")";
119 for(
int i=0; i<I; i++) {
122 for(
int j=0; j<J; j++) {
124 int K=a[i][j].size();
125 for(
int k=0; k<K; k++) {
140 for(
int i=0; i<I; i++) {
143 for(
int j=0; j<J; j++) {
156 for(
int i=0; i<n; i++) {
167 for(T x:a) os<<x<<
",";
175 for(T x:a) os<<x<<
",";
183 for(T x:a) os<<x<<
",";
187template<
typename T1,
typename T2>
190 for(pair<T1,T2> x:a) os<<x<<
",";
227template<
typename T,
auto N>
230 for(
int i=0; i<N; i++) {
240 for(
int i=0; i<n; i++) {
251 for(
int i=0; i<n; i++) {
258template<
typename T,
typename U,
auto M>
262 for(
int i=0; i<n; i++) {
273 for(
int i=0; i<n; i++) {
281 vector<vector<
int>> group=a.groups();
286 vector<vector<
int>> group=a.groups();
291#define print_line cerr<<"--------------------"<<__LINE__<<"--------------------"<<"\n"
292#define debug(...) DebugPrint(0
,#__VA_ARGS__,__VA_ARGS__)
293#define getName(VariableName) #VariableName
297template<
typename T1,
typename T2,
typename...T3>
298void DebugPrint(
int i,
const T1& name,
const T2& a,
const T3& ...b) {
302 if(name[i]==
'\0')
break;
303 if(tmp==0&&name[i]==
',')
break;
305 if(name[i]==
'(') tmp++;
306 else if(name[i]==
')') tmp--;
312 DebugPrint(i+1,name,b...);
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)