/* #include void self::main(){ LL(N,X); DsuPlain uf(N+1); fo(i,2,N+1){ fo(j,i*2,N+1,i){ uf.merge(i,j); } } pp(uf.size(X)); } */ #include using namespace std; namespace self{void main();void sub();templatevoid pp(const auto&...a);void epp(const auto&...a);} int main(){cin.tie(nullptr)->sync_with_stdio(0);cout<(0,__VA_ARGS__);iconstexpr auto for_range(T s,T a,T b,T c=1){return array{a-s,b,(1-s*2)*c};} void lin(auto&...a){(cin>>...>>a);} templateusing pack_back_t=tuple_element_t>; } namespace self{ templatestruct vec; templatestruct hvec_helper{using type=vec::type>;}; templatestruct hvec_helper<0,T>{using type=T;}; templateusing hvec=hvec_helper::type; templatestruct vec:vector{ using vector::vector; }; templaterequires(sizeof...(A)>=2)vec(const A&...a)->vec>>; } namespace self{ class DsuPlain{ public: ll n_; vecpar_or_size_; DsuPlain(ll n):n_(n),par_or_size_(n,-1){} auto merge(ll a,ll b){ ll x=leader(a),y=leader(b); if(x==y)return x; if(-par_or_size_[x]<-par_or_size_[y])swap(x,y),swap(a,b); par_or_size_[x]+=par_or_size_[y]; par_or_size_[y]=x; return x; } ll leader(ll a){ if(par_or_size_[a]<0)return a; return par_or_size_[a]=leader(par_or_size_[a]); } ll size(ll a){return-par_or_size_[leader(a)];} }; } templatevoid self::pp(const auto&...a){const char*c="";((o<