def nearest_unequal_elements(dts, dt):
    if not dts.is_unique:
        raise ValueError("dts must be unique")
    if not dts.is_monotonic_increasing:
        raise ValueError("dts must be sorted in increasing order")
    if not len(dts):
        return None, None
    sortpos = dts.searchsorted(dt, side='left')
    try:
        sortval = dts[sortpos]
    except IndexError:
        return dts[-1], None
    if dt < sortval:
        lower_ix = sortpos - 1
        upper_ix = sortpos
    elif dt == sortval:
        lower_ix = sortpos - 1
        upper_ix = sortpos + 1
    else:
        lower_ix = sortpos
        upper_ix = sortpos + 1
    lower_value = dts[lower_ix] if lower_ix >= 0 else None
    upper_value = dts[upper_ix] if upper_ix < len(dts) else None
    return lower_value, upper_value