#include <bits/stdc++.h> using namespace std; namespace LIB { template<class MT>class MultiSplit { using ll=long long; using sl=set<ll>; template<class T>using ve=vector<T>; MT& ds; sl spl; template<class T>void push(ve<T>& t, T x) { t.push_back(x); } public: MultiSplit(MT& ds):ds(ds) { spl.insert((ll)ds.size()-1); } void split(ll i) { spl.insert(i); } ve<MT> get() { ve<MT> res; MT div; auto d=ds.begin(); auto s=spl.begin(); for(ll i=0;i!=(ll)ds.size();i++) { push(div,*d),d++; if(i==*s) res.push_back(div),div.clear(),s++; } return res; } }; }