int getSegmentNumber(int cellId) {
        int row = getRow(cellId);
        int positionInRow = getPositionInRow(cellId);
        if (row <= 0) {
            return 0;
        } else if (row < n) {
            return positionInRow / row;
        } else if (row < 2*n) {
            return positionInRow / (n + row);
        } else if (row <= 3*n) {
            return 0;
        } else if (row <= 4*n) {
            return (positionInRow * 6 + getNumCellsInRow(row) + 3) / (getNumCellsInRow(row) * 2);
        } else if (row < 5*n) {
            return positionInRow / (5*n - row);
        } else return 0;
    }