class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param n int整型 
     * @param m int整型 
     * @return int整型
     */
    int ysf(int n, int m) {
	  if(n<1 || m<1)return -1;
        // write code here
        list<int> nums;

        for(int i=1; i<=n; i++){
            nums.push_back(i);
        }

        auto bt = nums.begin();
        while(nums.size() >1){
            for(int i=1; i<m; i++){
                ++bt;
                if(bt == nums.end()){
                    bt = nums.begin();   //手动创造循环
                }
            }

            auto next = bt;  //next = bt++; 是先进行= 再进行++;
            ++next;
            if(next == nums.end()){
                next = nums.begin();
            }

            nums.erase(bt);
            bt = next;
        }

        return *bt;
    }
};