diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/.idea/Backtracking-2.iml b/.idea/Backtracking-2.iml
new file mode 100644
index 00000000..b107a2dd
--- /dev/null
+++ b/.idea/Backtracking-2.iml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
new file mode 100644
index 00000000..919ce1f1
--- /dev/null
+++ b/.idea/codeStyles/Project.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml
new file mode 100644
index 00000000..a55e7a17
--- /dev/null
+++ b/.idea/codeStyles/codeStyleConfig.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 00000000..639900d1
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 00000000..96d9dd7d
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 00000000..35eb1ddf
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/SubSets.java b/SubSets.java
new file mode 100644
index 00000000..14f14efb
--- /dev/null
+++ b/SubSets.java
@@ -0,0 +1,27 @@
+import java.util.ArrayList;
+import java.util.List;
+
+public class SubSets {
+ public List> subsets(int[] nums) {
+ List> result = new ArrayList<>();
+ List currSet = new ArrayList<>();
+ helper(nums, result, currSet, 0);
+ return result;
+ }
+ private void helper(int[] nums, List> result, List currSet, int idx){
+ //base
+ if(idx == nums.length){
+ result.add(new ArrayList<>(currSet));
+ return;
+ }
+ //logic
+ //choose
+ currSet.add(nums[idx]);
+ helper(nums, result, currSet, idx+1);
+ currSet.remove(currSet.size()-1);
+
+ //no choose
+ helper(nums, result, currSet, idx+1);
+
+ }
+}