class Point:
    def __init__(self, x : int = 0, y : int = 0, z : int = 0, p : tuple[int,int,int] = None):
        if p != None: x,y,z = p
        self.x = x
        self.y = y
        self.z = z
        self.position = (x,y,z)
        
    def set_position(self, x : int = None, y : int = None, z : int = None, p : tuple[int,int,int] = None):
        if p != None: x,y,z = p
        self.x = x if x != None else self.x
        self.y = y if y != None else self.y
        self.z = z if z != None else self.z
        self.position = (self.x,self.y,self.z)
        
    def __repr__(self):
        return f"Point({self.position})"
    
    def copy(self) -> 'Point':
        return Point(self.x, self.y, self.z)