#include #include #include #include #define f first #define s second #define mp make_pair #define pb push_back #define eb emplace_back #define lb lower_bound #define ub upper_bound #define rsz resize #define sz(x) (int)x.size() #define all(x) begin(x), end(x) #define tr(a, x) for (auto & a : x) #define mem(a, b) memset(a, (b), sizeof(a)) #define pc __builtin_popcount #define clz __builtin_clz #define ctz __builtin_ctz using namespace std; using namespace __gnu_pbds; using namespace __gnu_cxx; using str = string; using ll = long long; using ld = long double; using cd = complex; using ii = pair; using pl = pair; using pd = pair; using vi = vector; using vl = vector; using vd = vector; using vii = vector; using vpl = vector; using vpd = vector; template using ordered_set = tree, rb_tree_tag, tree_order_statistics_node_update>; template using ordered_multiset = tree, rb_tree_tag, tree_order_statistics_node_update>; // Use with caution const ld PI = 4*atan((ld)1); const ll INF = 1e9, LINF = 1e18, MOD = 1e9+7; const int MX = 1e5+5; int main() { cin.tie(0)->sync_with_stdio(0); }