diff --git a/Backtracking/1174.cpp b/Backtracking/1174.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..02e7c3990ed2690e36b87f3a61e62373771bb695
--- /dev/null
+++ b/Backtracking/1174.cpp
@@ -0,0 +1,36 @@
+#include<iostream>
+#include<vector>
+#include<algorithm>
+using namespace std;
+
+vector<long long> desc;
+void back(long long now)
+{
+    
+
+    int remain = now % 10;
+    for(int i= 0 ;i<remain;i++)
+    {
+        desc.push_back(now*10 + i);
+        back(now*10 + i);
+    }
+}
+
+int main()
+{
+    int N;
+    cin >> N; 
+
+    for(long long i=0;i<10;i++)
+    {
+        desc.push_back(i);
+        back(i);
+    }
+
+    sort(desc.begin(), desc.end());
+
+    if(N > desc.size())
+        cout << -1;
+    else
+        cout << desc[N-1];
+}
\ No newline at end of file
diff --git a/Backtracking/14888.cpp b/Backtracking/14888.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..81bf8c05b9c8caa079619499c97c4a0f8f698a73
--- /dev/null
+++ b/Backtracking/14888.cpp
@@ -0,0 +1,71 @@
+#include<iostream>
+#include<vector>
+#include<algorithm>
+using namespace std;
+
+int ans_max = -1111111111, ans_min = 1111111111;
+int N, op[4];
+vector<int> A;
+vector<int> seq;
+
+int cal()
+{
+    int re = A[0];
+    for(int i=0;i<N-1;i++)
+    {
+        if(seq[i] == 0)
+            re = re + A[i+1];
+        else if(seq[i] == 1)
+            re = re - A[i+1];
+        else if(seq[i] == 2)
+            re = re * A[i+1];
+        else
+            re = re/ A[i+1];
+    }
+
+    return re;
+}
+
+void back(int idx)
+{
+    if(idx==N - 1)
+    {
+        int ans = cal();
+
+        ans_max = max(ans, ans_max);
+        ans_min = min(ans, ans_min);
+
+        return;
+    }
+
+    for(int i=0;i<4;i++)
+    {
+        if(op[i] == 0)
+            continue;
+
+        op[i]--;
+        seq.push_back(i);
+        back(idx+1);
+        op[i]++;
+        seq.pop_back();
+    }
+}
+
+int main()
+{
+    cin >> N;
+
+    int num;
+    for(int i=0;i<N;i++)
+    {
+        cin >> num;
+        A.push_back(num);
+    }
+
+    for(int i=0;i<4;i++)
+        cin >> op[i];
+
+    back(0);
+
+    cout << ans_max << "\n" << ans_min << "\n";
+}
\ No newline at end of file
diff --git a/Backtracking/18430.cpp b/Backtracking/18430.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..4320b2cd27bcf241293ccd8da0b76004b02534b1
--- /dev/null
+++ b/Backtracking/18430.cpp
@@ -0,0 +1,114 @@
+#include<iostream>
+#include<vector>
+#include<algorithm>
+using namespace std;
+
+int N, M, ans = 0;
+vector<vector<int>> input;
+vector<vector<int>> visit;
+
+int check(int x1, int y1, int x2, int y2, int x3, int y3)
+{    
+    if(x2 < 0 || y2 < 0 || x3 < 0 || y3 < 0)
+        return -1;
+    if(x2 >= N || y2 >= M || x3 >= N || y3 >= M)
+        return -1;
+    if(visit[x1][y1] == 1 || visit[x2][y2] == 1 || visit[x3][y3] == 1)
+        return -1;
+
+    int re = input[x1][y1] * 2 + input[x2][y2] + input[x3][y3];
+    return re;
+}
+
+void back(int x, int y, int sum)
+{
+    if(x == N)
+    {
+        ans = max(ans, sum);
+        return;
+    }
+
+    int intensity = check(x,y, x-1, y, x, y-1);
+    if(intensity != -1)
+    {
+        visit[x][y] = 1;
+        visit[x-1][y] = 1;
+        visit[x][y-1] = 1;
+        if(y == M - 1)
+            back(x+1, 0, sum + intensity);
+        else
+            back(x, y+1, sum + intensity);
+        visit[x][y] = 0;
+        visit[x-1][y] = 0;
+        visit[x][y-1] = 0;
+    }
+
+    intensity = check(x,y, x-1, y, x, y+1);
+    if(intensity != -1)
+    {
+        visit[x][y] = 1;
+        visit[x-1][y] = 1;
+        visit[x][y+1] = 1;
+        if(y == M - 1)
+            back(x+1, 0, sum + intensity);
+        else
+            back(x, y+1, sum + intensity);
+        visit[x][y] = 0;
+        visit[x-1][y] = 0;
+        visit[x][y+1] = 0;
+    }
+
+    intensity = check(x,y, x+1, y, x, y-1);
+    if(intensity != -1)
+    {
+        visit[x][y] = 1;
+        visit[x+1][y] = 1;
+        visit[x][y-1] = 1;
+        if(y == M - 1)
+            back(x+1, 0, sum + intensity);
+        else
+            back(x, y+1, sum + intensity);
+        visit[x][y] = 0;
+        visit[x+1][y] = 0;
+        visit[x][y-1] = 0;
+    }
+
+    intensity = check(x,y, x+1, y, x, y+1);
+    if(intensity != -1)
+    {
+        visit[x][y] = 1;
+        visit[x+1][y] = 1;
+        visit[x][y+1] = 1;
+        if(y == M - 1)
+            back(x+1, 0, sum + intensity);
+        else
+            back(x, y+1, sum + intensity);
+        visit[x][y] = 0;
+        visit[x+1][y] = 0;
+        visit[x][y+1] = 0;
+    }
+
+    if(y == M - 1)
+            back(x+1, 0, sum);
+        else
+            back(x, y+1, sum);
+}
+
+int main()
+{
+    cin >> N >> M;
+    for(int i=0;i<N;i++)
+    {   
+        int num;
+        vector<int> temp(M);
+        visit.push_back(temp);
+
+        for(int j=0;j<M;j++)
+            cin >> temp[j];
+        input.push_back(temp);
+    }
+
+    back(0,0,0);
+
+    cout << ans;
+}