diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile
new file mode 100644
index 0000000..f2bb45f
--- /dev/null
+++ b/.devcontainer/Dockerfile
@@ -0,0 +1,12 @@
+FROM node:22
+
+# Install basic development tools
+RUN apt update && apt install -y less man-db sudo
+
+# Ensure default `node` user has access to `sudo`
+ARG USERNAME=node
+RUN echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME \
+ && chmod 0440 /etc/sudoers.d/$USERNAME
+
+# Set `DEVCONTAINER` environment variable to help with orientation
+ENV DEVCONTAINER=true
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
new file mode 100644
index 0000000..2fcdf5c
--- /dev/null
+++ b/.devcontainer/devcontainer.json
@@ -0,0 +1,8 @@
+// See https://containers.dev/implementors/json_reference/ for configuration reference
+{
+ "name": "Untitled Node.js project",
+ "build": {
+ "dockerfile": "Dockerfile"
+ },
+ "remoteUser": "node"
+}
diff --git a/.gitignore b/.gitignore
index 1c3166c..892bf8a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,4 @@
*.obj
*.pbd
+node_modules
\ No newline at end of file
diff --git a/3/index.js b/3/index.js
new file mode 100644
index 0000000..ca613e5
--- /dev/null
+++ b/3/index.js
@@ -0,0 +1,29 @@
+const fs = require("fs")
+const regEx = /mul\(\d+,\d+\)|do\(\)|don\'t\(\)/g
+let total = 0
+let count = true
+const input = fs.readFileSync("input.txt","utf-8")
+const result = input.match(regEx)
+// console.log("hello world")
+console.log(result)
+result.forEach((mulString)=>{
+ if (mulString=="do()"){
+ count=true
+ return
+ }
+ if(mulString=="don't()"){
+ count=false
+ return
+ }
+ if(count){
+ const numRegex= /\d+/g
+ const numbers = mulString.match(numRegex)
+ // console.log(...numbers)
+ const aVal =parseInt(numbers[0])
+ const bVal=parseInt(numbers[1])
+ total += aVal*bVal
+
+ }
+})
+// console.log(dontLocations.length)
+console.log("total: ",total)
\ No newline at end of file
diff --git a/3/index3a.js b/3/index3a.js
new file mode 100644
index 0000000..89ac79b
--- /dev/null
+++ b/3/index3a.js
@@ -0,0 +1,17 @@
+const fs = require("fs")
+const regEx = /mul\(\d+,\d+\)/g
+let total = 0
+const input = fs.readFileSync("input.txt","utf-8")
+const result = input.match(regEx)
+// console.log("hello world")
+console.log(result)
+result.forEach((mulString)=>{
+ const numRegex= /\d+/g
+ const numbers = mulString.match(numRegex)
+ console.log(...numbers)
+ const aVal =parseInt(numbers[0])
+ const bVal=parseInt(numbers[1])
+ total += aVal*bVal
+})
+
+console.log("total: ",total)
\ No newline at end of file
diff --git a/3/input.txt b/3/input.txt
new file mode 100644
index 0000000..f6e07bd
--- /dev/null
+++ b/3/input.txt
@@ -0,0 +1 @@
+from()$&mul(602,165)why()mul(305,64)?(where()-:mul(80,703);)why()*from()%select()mul(290,957)}/?%'from()]mul(851,335)mul(844,49)what()]![from(667,522)]}how()how()mul(938,695)#/)*?@~?@select()mul(706,392)^mul(242,513)who()@]mul(871,132)( ] from()$mul(41,656)^{(&how()from()[when()-when()mul(628,478)mul(287,621)why():'mul(127,825)# ]mul(360,578)select()?^^select() @:why()mul(136,849);{how()%*@%+how()[mul(544,891)mul(436,21)from()}mul(184,294)+/from(81,871) how()&?]mul(297,492)select()/}%;$$~{*mul(161,703)when():+(,mul(335,695) ()&where()?who();'mul(689,420)^how()from()how()what()>]where()don't()}%mul(78,176)~$where():@,>%mul(62,695)@{#how()mul(742,538)who(){$$who()@{+(mul(282,209)%mul(428,514)/+from()}>@mul(665,815),mul(762,48)[+/mul(591,445)~?who()#mul(36,3)select()~$ [<}*/do()''>~'$mul(109,905)}how(){!@where()%/mul(380,929)*){~:where()mul(547,552)$:*mul(58,881)where(145,89)[why(634,213)mul(699,443)mul(826,660)what()from()-how()}'from()what()<;mul(700,665)] #(*?how()<+mul(507,719))~*/-^(%mul(941,551)$;don't()#;:when()+#>mul(87,663)who()/how()mul(332,238)~mul(290,235)',why()mul(950,204);where(),(when()mul(233,633)-^}@who()^mul(289,147)$>-'$select(736,261)*~]mul(899,836)'why()do()@when()why()from()mul(975,883);select()who()mul(165,847)why();^/{^mul(31,153)?;'don't()( from()+})what()mul(262,509)!*where()}/-#~/mul(308,953);*!]mul(741,76)[mul(256,536)[)>%-who()<^[$mul(382,338)where()[ when():select()<>mul(993,630)@$mul(411,640)/+where(623,926)/~mul(807,676)+*],mul(579,979who()what()from()when()how()what(),mul(882,434)&who()'mul(154,824)from()#<<,,{where()$mul(259,438)from()}?:;mul(641,967?from())<,>~mul(325,912)%select()mul where()do()where()where();(!,[$why()mul(131,307)mul(323,794)mul(570,548+!$from()!}what(588,195):mul(889,788);;*!<$[when(),%mul(177,883)[mul(815,344)when()@$+ @)where(935,128)}{mul(638,520)why()-] when()] mul(639,171)!>[mulwho()~^:what()why()] mul(560,354)from()where()/];,how()} mul(980,896)>/;%who()&where(504,464);!do(),where()/mul(901,274)!when()mul(76,577)>select()mul(257,297)^+(/what(52,6)@%from()who()mul(331,276),what()when())+]{:&mul(653,163)''; '~mul(946,195)+/[from()mul(345,866)mul(975,684)#-:/why();-<:&mul(416,406)where(864,494)}{mul(343,101where()~ $/!where(331,467)who()@:mul(484,862)' mul(629,780)&%why(436,493)what()$mul(104,102)$,where()mul(2,157)who()%mul(404,895)mul(154,983)):]]%#:do()]from()+/#)/mul(682,696)what(518,168)select()where()+when(518,618)mul(799,756)+}why()}:mul(565,289);mul(687,685);@%!>?why()&;-mul(819,190)}]mul(596,898)mul(113,184)who();{@do()@?)why(),*/select()[mul(351,147):{+}}~^from()why()mul(350,104$''(from()$!when()mul(574,321)-mul(325,17);<& who(){]mul(960,765)^from())<<$:how()mul(412,562);mul(220,976)*mul(338,463),$/#',from();select()*mul(982,199)&^:&mul(607,915)who()mul(473,531)$mul(490,191)select()&-~+>when()mul(105where()'/!do()<;[#why()mul(453,793)&*,^who()who()what()-@why()from(642,548)%^(from()+don't()?-mul(976,65)what();]mul(155,153))where()who()when()[]mul(44,452)}mul(51,177)~$[mul(462,949)$}^select()#[)]mul(743,555)?[mul(750,557)}#{from()%(why()where()mul(807,786)+})>{)what()}do()mul(231 (how()*mul(667,833)when()~from()why(),who()(;)mul(729,999)mul(805,756)when()}what()who()!**who()]mul(920,392*]when(26,462)mul(558,874)!~?+$$';mul(694,195)when()/$?from()mul(198,978)%>;/why()who()}+why()@mul(248,980)$ how()>'select();mul(888,351)mul(476,169)[>@-mul(282,926)#why()mul(637,563)-'~@!how()'^what()$mul(303,12)]how()~mul(922,806)^+when()[?don't(){,when()!*select()select(828,14)who()'why()mul(237,256)#mul(603,548)mul(887,362)!>%/how()[,%]don't()&mul(499,574)select()}%how() mul(787,625)what()who()) '*,mul(197,610)?!~('where()%'select()how()mul(840,759)} {$mul(19,916)}/mul(965[)) *who()how()~from()who()how()mul(319,356),where(196,245) who()mulwhat())^when(211,851)select()do()-$>+}'?from();>mul(349,592)&;>mul(473,196)where()~mul(939,515)$?{;^{}what()mul(417,24){??where(390,662)~from(),mul(93,289) when()] #from()$mul(543,426)&;&*;why()where()mulfrom(){-?'>,;who()mul(65,960):!how()*}*mul(544,316)%what(585,366)how():>mul(453,85)&[-from()/-#