diff --git a/2021-08/2021-08-26 (day39)/AGO/README.md b/2021-08/2021-08-26 (day39)/AGO/README.md
new file mode 100644
index 00000000..55fd17af
--- /dev/null
+++ b/2021-08/2021-08-26 (day39)/AGO/README.md
@@ -0,0 +1,22 @@
+# 70. Climbing Stairs
+
+`Easy`
+
+## Description
+
+
You are climbing a staircase. It takes n
steps to reach the top.
+
+Each time you can either climb 1
or 2
steps. In how many distinct ways can you climb to the top?
+
+## My thought
+
+steps to 5 equals `step 3 combinations + 2 steps `or `step 3 combiations + 1 step`.
+
+So we can create a DP `f(n) = f(n-1) + f(n-2)`
+There is two way
+
+1. Recursive from the end.
+2. Store steps spend into an array and loop from step 3 to end, plus previous steps and more previous steps.
+ `To save more menmory, we can just store 2 steps previous without whole route`
+
+## O(N)
diff --git a/2021-08/2021-08-26 (day39)/AGO/solution.ts b/2021-08/2021-08-26 (day39)/AGO/solution.ts
new file mode 100644
index 00000000..446ac4e7
--- /dev/null
+++ b/2021-08/2021-08-26 (day39)/AGO/solution.ts
@@ -0,0 +1,27 @@
+// solution1
+function climbStairs(n: number): number {
+ let stairs:number[] = new Array();
+ stairs[1] = 1;
+ stairs[2] = 2;
+
+ for(let i = 3; i<=n;i++){
+ stairs[i] = stairs[i-1] + stairs[i-2];
+ }
+ return stairs[n];
+};
+// solution2
+function climbStairs(n: number): number {
+ if (n==1) return 1;
+ if (n==2) return 2;
+
+ let oneStepBefore = 2;
+ let twoStepBefore = 1;
+ let ans = 2;
+ for(let i = 3; i<=n;i++){
+ ans = oneStepBefore + twoStepBefore;
+ let temp = oneStepBefore;
+ oneStepBefore = ans;
+ twoStepBefore = temp;
+ }
+ return ans;
+};
\ No newline at end of file