//nの約数を小さい順に列挙した配列を返す
//計算量:O(√n)
template <typename T>
vector<T> divisor(T n)
{
vector<T> ret1, ret2;
for (T i = 1; i * i <= n; i++)
{
if (n % i == 0)
{
ret1.push_back(i);
if (i * i != n)
ret2.push_back(n / i);
}
}
T siz = ret2.size();
for (T i = (siz - 1); i >= 0; i--)
{
ret1.push_back(ret2[i]);
}
return (ret1);
}