#pragma once
namespaceRandom{mt19937_64gen(chrono::steady_clock::now().time_since_epoch().count());uint64_tget(){returngen();}template<classT>Tget(Tn){returnget()%n;}template<classT>Tget(Tl,Tr){returnget(r-l)%(r-l+1)+l;}doubleuniform(){returndouble(get(1<<30))/(1<<30);}template<classT>vector<T>get_vector(size_tn,Tl,Tr){vector<T>a(n);for(auto&v:a)v=get(l,r);returna;}template<classIter>voidshuffle(Iterbegin,Iterend){if(begin==end)return;intn=end-begin;for(inti=n-1;i>0;i--){intj=get(i+1);if(j<i)swap(*(begin+i),*(begin+j));}}};// namespace Random/**
* @brief Random
*/
#line 2 "util/random.hpp"
namespaceRandom{mt19937_64gen(chrono::steady_clock::now().time_since_epoch().count());uint64_tget(){returngen();}template<classT>Tget(Tn){returnget()%n;}template<classT>Tget(Tl,Tr){returnget(r-l)%(r-l+1)+l;}doubleuniform(){returndouble(get(1<<30))/(1<<30);}template<classT>vector<T>get_vector(size_tn,Tl,Tr){vector<T>a(n);for(auto&v:a)v=get(l,r);returna;}template<classIter>voidshuffle(Iterbegin,Iterend){if(begin==end)return;intn=end-begin;for(inti=n-1;i>0;i--){intj=get(i+1);if(j<i)swap(*(begin+i),*(begin+j));}}};// namespace Random/**
* @brief Random
*/