class Card:
    ranks = [str(k) for k in range(2,11)] + ["Jack", "Queen", "King", "Ace"]
    suits = ["clubs", "diamonds", "hearts", "spades"]
    def __init__(self, n):
        self.n = n
    
    def __str__(self):
        return f"{Card.ranks[self.n%13]} of {Card.suits[self.n//13]}"

    def __repr__(self):
        return f"Card({self.n})"

    @property
    def rank(self):
        return Card.ranks[self.n%13]
        
    @property
    def suit(self):
        return Card.ranks[self.n//13]


if __name__ == "__main__":
    print(Card(5))
