int climbStairs(int n) {
        if(n == 1) return 1;
        vector<int> dp(2);
        dp[1%2] = 1;
        dp[2%2] = 2;
        for(int i = 3; i < n+1; i++)
            dp[i%2] = dp[(i-1)%2]+dp[(i-2)%2];
        return dp[n%2];
    }