diff --git a/app/main.py b/app/main.py
index 6d375672..40199e67 100644
--- a/app/main.py
+++ b/app/main.py
@@ -1,25 +1,69 @@
 from abc import ABC
 
 
-class IntegerRange:
-    pass
+class IntegerRange(ABC):
+    def __init__(self, min_amount: int, max_amount: int) -> None:
+        self.min_amount = min_amount
+        self.max_amount = max_amount
+
+    def __get__(self, instance: object, owner: type) -> None:
+        value = getattr(instance, self.protected_name)
+        return value
+
+    def __set_name__(self, owner: type, name: str) -> None:
+        self.protected_name = "_" + name
+
+    def __set__(self, instance: object, value: int) -> None:
+        if not self.min_amount <= value <= self.max_amount:
+            raise ValueError("Access denied")
+        setattr(instance, self.protected_name, value)
 
 
 class Visitor:
-   pass
+    def __init__(
+            self,
+            name: str,
+            age: int,
+            weight: int,
+            height: int
+    ) -> None:
+        self.name = name
+        self.age = age
+        self.weight = weight
+        self.height = height
 
 
 class SlideLimitationValidator(ABC):
-    pass
+    def __init__(self, age: int, weight: int, height: int) -> None:
+        self.age = age
+        self.weight = weight
+        self.height = height
 
 
 class ChildrenSlideLimitationValidator(SlideLimitationValidator):
-    pass
+    age = IntegerRange(4, 14)
+    height = IntegerRange(80, 120)
+    weight = IntegerRange(20, 50)
 
 
 class AdultSlideLimitationValidator(SlideLimitationValidator):
-    pass
+    age = IntegerRange(14, 60)
+    height = IntegerRange(120, 220)
+    weight = IntegerRange(50, 120)
 
 
 class Slide:
-    pass
+    def __init__(
+            self,
+            name: str,
+            limitation_class: type[SlideLimitationValidator]
+    ) -> None:
+        self.name = name
+        self.limitation_class = limitation_class
+
+    def can_access(self, visitor: Visitor) -> bool:
+        try:
+            self.limitation_class(visitor.age, visitor.weight, visitor.height)
+            return True
+        except ValueError:
+            return False