#include <vector>
class Solution {
public:
    void dfs(int n, string left, string mid, string right, vector<string> &ans){
        if(n <= 0) return;
        //首先将left中的n - 1 个移动到中间,然后再将最下面的圆盘放到最右边
        dfs(n - 1, left, right, mid, ans);
        string temp = "move from " + left + " to " + right;
        ans.push_back(temp);
        dfs(n - 1, mid, left, right, ans);  
    }
  
    vector<string> getSolution(int n) {
        //汉诺塔问题是典型的的递归问题,只不过是在递归问题中进行了一些的输出
        string right = "right";
        string left = "left";
        string mid  ="mid";
        
        vector<string> ans;
        dfs(n, left, mid, right, ans);
        return ans;
    }
};