This documentation is automatically generated by online-judge-tools/verification-helper
#include "random/shuffle.hpp"
#include "random/base.hpp"
template <typename T>
void shuffle(vc<T>& A) {
FOR(i, len(A)) swap(A[i], A[RNG(0, i + 1)]);
}
#line 2 "random/base.hpp"
u64 RNG_64() {
static uint64_t x_
= uint64_t(chrono::duration_cast<chrono::nanoseconds>(
chrono::high_resolution_clock::now().time_since_epoch())
.count())
* 10150724397891781847ULL;
x_ ^= x_ << 7;
return x_ ^= x_ >> 9;
}
u64 RNG(u64 lim) { return RNG_64() % lim; }
ll RNG(ll l, ll r) { return l + RNG_64() % (r - l); }
#line 2 "random/shuffle.hpp"
template <typename T>
void shuffle(vc<T>& A) {
FOR(i, len(A)) swap(A[i], A[RNG(0, i + 1)]);
}