#include <bits/stdc++.h>
using namespace std;
vector<int> li1;
int main() {
/*
vector<int> li;
li.push_back(x);
vector<int> li2(n + 1);
vector<vector<int>> li3(n + 1, vector<int>(m + 1));
*/
/*
set<int> st;
set<int,greater<int>> st; 从大到小
set<int,less<int>> st;从小到大
st.insert(x);
st.find(x);
st.erase(x);
st.erase(find(x));
st.begin() st.end()
st.rbegin() st.rend()
for(auto x:st){}
for(auto p=st.begin();p!=st.end();st++){}
st.lower_bound(x);
st.upper_bound(x);
multiset<int> st;
st.insert(1);
st.insert(1);
st.insert(1);
st.erase(st.find(1));
printf("%d", st.count(1));
*/
/*
map<类型1,类型2> mp; 建立类型1的数据到类型2数据的映射关系
mp[x]=y; 指定x可以找到y
mp.find(x)==mp.end() 寻找是否存在关于x的映射关系,不存在会与end相同
mp.count(x) 如果不存在映射关系会返回0
mp.erase(x) 擦除关系
mp.clear() 清空
for(auto x:mp){} 遍历所有的二元关系,类型为pair<类型1,类型2>
x.first取前面x.second取后面
也可以
for(auto [x,y]:mp) 此时x表示前面的部分,y表示后面的部分
*/
}