diff --git a/week8/week8/.gitignore b/week8/week8/.gitignore
new file mode 100644
index 0000000..f68d109
--- /dev/null
+++ b/week8/week8/.gitignore
@@ -0,0 +1,29 @@
+### IntelliJ IDEA ###
+out/
+!**/src/main/**/out/
+!**/src/test/**/out/
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+bin/
+!**/src/main/**/bin/
+!**/src/test/**/bin/
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store
\ No newline at end of file
diff --git a/week8/week8/.idea/.gitignore b/week8/week8/.idea/.gitignore
new file mode 100644
index 0000000..13566b8
--- /dev/null
+++ b/week8/week8/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/week8/week8/.idea/inspectionProfiles/Project_Default.xml b/week8/week8/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..df543e3
--- /dev/null
+++ b/week8/week8/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/week8/week8/.idea/kotlinc.xml b/week8/week8/.idea/kotlinc.xml
new file mode 100644
index 0000000..506f8fd
--- /dev/null
+++ b/week8/week8/.idea/kotlinc.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/week8/week8/.idea/libraries/KotlinJavaRuntime.xml b/week8/week8/.idea/libraries/KotlinJavaRuntime.xml
new file mode 100644
index 0000000..3e44d76
--- /dev/null
+++ b/week8/week8/.idea/libraries/KotlinJavaRuntime.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/week8/week8/.idea/misc.xml b/week8/week8/.idea/misc.xml
new file mode 100644
index 0000000..cf9abe6
--- /dev/null
+++ b/week8/week8/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/week8/week8/.idea/modules.xml b/week8/week8/.idea/modules.xml
new file mode 100644
index 0000000..b8960e9
--- /dev/null
+++ b/week8/week8/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/week8/week8/.idea/vcs.xml b/week8/week8/.idea/vcs.xml
new file mode 100644
index 0000000..b2bdec2
--- /dev/null
+++ b/week8/week8/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/week8/week8/src/main/kotlin/Main.kt b/week8/week8/src/main/kotlin/Main.kt
new file mode 100644
index 0000000..2a82bc5
--- /dev/null
+++ b/week8/week8/src/main/kotlin/Main.kt
@@ -0,0 +1,83 @@
+import java.util.LinkedList
+import java.util.Queue
+import java.util.Scanner
+import java.util.StringTokenizer
+import kotlin.properties.Delegates
+
+lateinit var connected: Array>
+lateinit var dfsVisited: Array
+lateinit var visited: Array>
+lateinit var apart: Array
+val dx = arrayOf(0, 0, 1, -1)
+val dy = arrayOf(1, -1, 0, 0)
+var appartNum = 0
+var N = 0
+
+
+fun main() {
+ N = readLine()?.toInt() ?: return
+ val scanner = Scanner(System.`in`)
+ connected = Array(N){ Array(N) { 0 } }
+ visited = Array(N){ Array(N) { false } }
+ apart = Array(N*N){ 0 }
+
+ for(i in 0 until N){
+ val input = readLine()
+ for(j in 0 until N){
+ connected[i][j] = input?.get(j)?.toString()?.toInt() ?: 0
+ }
+ }
+
+ for(i in 0 until N){
+ for(j in 0 until N){
+ if(connected[i][j] == 1 && !visited[i][j]){
+ appartNum++
+ BFS(i, j)
+ }
+ }
+ }
+
+ apart.sort()
+ println("$appartNum")
+
+ apart.forEach { v->
+ if(v != 0) println(v)
+ }
+
+}
+
+fun BFS(x : Int, y : Int){
+ val q: Queue = LinkedList()
+ q.add(intArrayOf(x, y))
+ visited[x][y] = true
+ apart[appartNum]++
+
+ while(!q.isEmpty()){
+ val curX = q.peek()[0]
+ val curY = q.peek()[1]
+ q.poll()
+
+ for(i in 0 until 4){
+ val nx = curX + dx[i]
+ val ny = curY + dy[i]
+
+ if(nx >= 0 && ny >= 0 && nx < N && ny < N){
+ if(connected[nx][ny] == 1 && !visited[nx][ny]){
+ q.add(intArrayOf(nx, ny))
+ visited[nx][ny] = true
+ apart[appartNum]++
+ }
+ }
+ }
+ }
+}
+fun DFS(s : Int){
+ if(dfsVisited[s]) return
+ dfsVisited[s] = true
+ print("$s ")
+
+ connected[s].forEach { next->
+ DFS(next)
+ }
+
+}
\ No newline at end of file
diff --git a/week8/week8/week8.iml b/week8/week8/week8.iml
new file mode 100644
index 0000000..4eba30b
--- /dev/null
+++ b/week8/week8/week8.iml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file