                 if ((u_len+W-1)/W >= 4)
                     break;
                 i-=1;
-            }*/
+            }
 
             //int imbalanced_work_est = ((u_len+W-1)/W)*log_v;
             //int balanced_work_est = ((total_work+W-1)/W) + log_u;
             //bin_index = (K*balanced_work_est > imbalanced_work_est);
-            bin_index=i;
+            bin_index = i;
+            //bin_index=2;
             // Either count or add the item to the appropriate queue
             if (countOnly)
                 atomicAdd(&(d_queue_info.ptr()->queue_sizes[bin_index]), 1ULL);

            if (src.id() >= dst.id()) return; // imposes ordering
            degree_t src_len = dst.degree();
            degree_t dst_len = dst.degree();
            int i = 3;
            
            total_work = src_len + dst_len - 1;
            int W;
            while (i > 0) {

//==============================================================================
//==============================================================================
// stub
#define MAX_ADJ_UNIONS_BINS 6
namespace adj_unions {
    struct queue_info {
        unsigned long long queue_sizes[MAX_ADJ_UNIONS_BINS] = {0,};
        vid_t *d_queues[MAX_ADJ_UNIONS_BINS] = {NULL,};
        unsigned long long queue_pos[MAX_ADJ_UNIONS_BINS] = {0,};
        int queue_threads_per[MAX_ADJ_UNIONS_BINS] = {32, 64, 128, 256, 512, 1024};
    };

    struct bin_edges {
