o ?Og? @spdZd ddddZd ddddZd dddd Zd ddd d Zzdd lTWn ey1YnweZeZdS)zBisection algorithms.NkeycC>|dur t||||}n t||||||d}|||dS)zInsert item x in list a, and keep it sorted assuming a is sorted. If x is already in a, insert it to the right of the rightmost x. Optional args lo (default 0) and hi (default len(a)) bound the slice of a to be searched. Nr) bisect_rightinsertaxlohirr -/opt/alt/python310/lib64/python3.10/bisect.py insort_rightsrcCs|dkrtd|durt|}|dur1||kr/||d}|||kr'|}n|d}||ks|S||krN||d}||||krF|}n|d}||ks5|S)aReturn the index where to insert item x in list a, assuming a is sorted. The return value i is such that all e in a[:i] have e <= x, and all e in a[i:] have e > x. So if x already appears in the list, a.insert(i, x) will insert just after the rightmost x already there. Optional args lo (default 0) and hi (default len(a)) bound the slice of a to be searched. rlo must be non-negativeN ValueErrorlenrr r r rZmidr r r rs&     rcCr)zInsert item x in list a, and keep it sorted assuming a is sorted. If x is already in a, insert it to the left of the leftmost x. Optional args lo (default 0) and hi (default len(a)) bound the slice of a to be searched. Nr) bisect_leftrrr r r insort_left5s rcCs|dkrtd|durt|}|dur1||kr/||d}|||kr)|d}n|}||ks|S||krN||d}||||krH|d}n|}||ks5|S)aReturn the index where to insert item x in list a, assuming a is sorted. The return value i is such that all e in a[:i] have e < x, and all e in a[i:] have e >= x. So if x already appears in the list, a.insert(i, x) will insert just before the leftmost x already there. Optional args lo (default 0) and hi (default len(a)) bound the slice of a to be searched. rrNrrrrr r r rDs&       r)*)rN) __doc__rrrrZ_bisect ImportErrorZbisectZinsortr r r r s"#