         OPERATOR(Vertex& src, Vertex& dst, Edge& edge) {
             // Choose the bin to place this edge into
             if (src.id() > dst.id()) return; // imposes ordering
-            int bin = 0;
+            int bin = 1;
             //bin = bin | (1 * (src.degree() + dst.degree() > 128));
+            /*
             if (src.degree() + dst.degree() <= 256)
                 bin = 0;
             else if (src.degree() + dst.degree() <= 256)
                 bin = 1;
             else if (src.degree() + dst.degree() > 256)
                 return;
-
+            */
             // Either count or add the item to the appropriate queue
             if (countOnly)
                 atomicAdd(&(d_queue_info.ptr()->queue_sizes[bin]), 1);

    for (auto i = queue_id; i < size; i += queue_stride) {
        auto src_vtx = hornet.vertex(array[i].x);
        auto dst_vtx = hornet.vertex(array[i].y);
        int srcLen = src_vtx.out_degree();
        int destLen = dst_vtx.out_degree();
        int total_work = srcLen + destLen;
        vid_t src = src_vtx.id();
        vid_t dest = dst_vtx.id();

        int diag_id;
        diag_id = thread_id*work_per_thread;

        vid_t low_ui, low_vi, high_vi, high_ui, ui_curr, vi_curr;
        if ((diag_id > 0) && (diag_id < total_work-1)) {
            // For the binary search, we are figuring out the initial poT of search.
            if (diag_id < u_len) {
