diff --git a/P002-Add-Two-Numbers/P002-Add-Two-Numbers.sln b/P002-Add-Two-Numbers/P002-Add-Two-Numbers.sln
new file mode 100644
index 0000000..e432984
--- /dev/null
+++ b/P002-Add-Two-Numbers/P002-Add-Two-Numbers.sln
@@ -0,0 +1,22 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 14
+VisualStudioVersion = 14.0.25420.1
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "P002-Add-Two-Numbers", "P002-Add-Two-Numbers\P002-Add-Two-Numbers.csproj", "{67E98B7B-3C50-4B4C-9D1E-25222C64ADA1}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {67E98B7B-3C50-4B4C-9D1E-25222C64ADA1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {67E98B7B-3C50-4B4C-9D1E-25222C64ADA1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {67E98B7B-3C50-4B4C-9D1E-25222C64ADA1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {67E98B7B-3C50-4B4C-9D1E-25222C64ADA1}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/P002-Add-Two-Numbers/P002-Add-Two-Numbers/App.config b/P002-Add-Two-Numbers/P002-Add-Two-Numbers/App.config
new file mode 100644
index 0000000..88fa402
--- /dev/null
+++ b/P002-Add-Two-Numbers/P002-Add-Two-Numbers/App.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/P002-Add-Two-Numbers/P002-Add-Two-Numbers/ListNode.cs b/P002-Add-Two-Numbers/P002-Add-Two-Numbers/ListNode.cs
new file mode 100644
index 0000000..ce51919
--- /dev/null
+++ b/P002-Add-Two-Numbers/P002-Add-Two-Numbers/ListNode.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace P002_Add_Two_Numbers
+{
+ public class ListNode
+ {
+ public int val;
+ public ListNode next;
+ public ListNode(int x) { val = x; }
+ }
+}
diff --git a/P002-Add-Two-Numbers/P002-Add-Two-Numbers/P002-Add-Two-Numbers.csproj b/P002-Add-Two-Numbers/P002-Add-Two-Numbers/P002-Add-Two-Numbers.csproj
new file mode 100644
index 0000000..c698a27
--- /dev/null
+++ b/P002-Add-Two-Numbers/P002-Add-Two-Numbers/P002-Add-Two-Numbers.csproj
@@ -0,0 +1,62 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {67E98B7B-3C50-4B4C-9D1E-25222C64ADA1}
+ Exe
+ Properties
+ P002_Add_Two_Numbers
+ P002-Add-Two-Numbers
+ v4.5.2
+ 512
+ true
+
+
+ AnyCPU
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ AnyCPU
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/P002-Add-Two-Numbers/P002-Add-Two-Numbers/Program.cs b/P002-Add-Two-Numbers/P002-Add-Two-Numbers/Program.cs
new file mode 100644
index 0000000..49e5159
--- /dev/null
+++ b/P002-Add-Two-Numbers/P002-Add-Two-Numbers/Program.cs
@@ -0,0 +1,34 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace P002_Add_Two_Numbers
+{
+ class Program
+ {
+ static void Main(string[] args)
+ {
+ var solution = new Solution();
+
+ // Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
+ // Output: 7-> 0-> 8
+
+ var input1 = new ListNode(2);
+ input1.next = new ListNode(4);
+ input1.next.next = new ListNode(3);
+
+ var input2 = new ListNode(5);
+ input2.next = new ListNode(6);
+ input2.next.next = new ListNode(4);
+
+ var answer = solution.AddTwoNumbers(input1, input2);
+ for (ListNode x1 = answer; x1 != null; x1 = x1?.next)
+ Console.Write(x1.val + " ");
+ Console.Write("\n");
+
+ Console.ReadLine();
+ }
+ }
+}
diff --git a/P002-Add-Two-Numbers/P002-Add-Two-Numbers/Properties/AssemblyInfo.cs b/P002-Add-Two-Numbers/P002-Add-Two-Numbers/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..07721c4
--- /dev/null
+++ b/P002-Add-Two-Numbers/P002-Add-Two-Numbers/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("P002-Add-Two-Numbers")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Xeon Productions")]
+[assembly: AssemblyProduct("P002-Add-Two-Numbers")]
+[assembly: AssemblyCopyright("Copyright © Xeon Productions 2017")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("67e98b7b-3c50-4b4c-9d1e-25222c64ada1")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/P002-Add-Two-Numbers/P002-Add-Two-Numbers/Solution.cs b/P002-Add-Two-Numbers/P002-Add-Two-Numbers/Solution.cs
new file mode 100644
index 0000000..4afdbb0
--- /dev/null
+++ b/P002-Add-Two-Numbers/P002-Add-Two-Numbers/Solution.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace P002_Add_Two_Numbers
+{
+ class Solution
+ {
+ /**
+ * 1562 / 1562 test cases passed.
+ * Status: Accepted
+ * Runtime: 166 ms
+ */
+ public ListNode AddTwoNumbers(ListNode l1, ListNode l2)
+ {
+ StringBuilder result = new StringBuilder();
+
+ int carryOver = 0;
+ for (ListNode x1 = l1, x2 = l2; x1 != null || x2 != null; x1 = x1?.next, x2 = x2?.next)
+ {
+ int finalVal = (x1 != null ? x1.val : 0) + (x2 != null ? x2.val : 0) + carryOver;
+ carryOver = Math.Abs(finalVal / 10);
+ result.Append((finalVal % 10).ToString());
+ }
+
+ if (carryOver == 1)
+ result.Append("1");
+
+ string resultString = result.ToString();
+
+ ListNode head = new ListNode(int.Parse(resultString[0].ToString()));
+ ListNode pointer = head;
+ for (int i = 1; i < resultString.Length; i++)
+ {
+ pointer.next = new ListNode(int.Parse(resultString[i].ToString()));
+ pointer = pointer.next;
+ }
+
+ return head;
+ }
+ }
+}