from dataclasses import dataclass


@dataclass
class Cell:
    x: int
    y: int
    isWall: bool = False
    isStart: bool = False
    isExit: bool = False
    weight: int = 1

    def isPassable(self):
        return not self.isWall

    def __repr__(self):
        parts = [f"Cell({self.x}, {self.y}"]
        if self.isWall:
            parts.append("WALL")
        if self.isStart:
            parts.append("START")
        if self.isExit:
            parts.append("EXIT")
        if self.weight != 1:
            parts.append(f"w={self.weight}")
        return ", ".join(parts) + ")"
