         OffsetT         num_tile_segments_prefix,
         OffsetT         num_segments)
     {
-        // Scatter first key of first tile (we unflagged it after scan)
-        if (IS_FIRST_TILE && (threadIdx.x == 0))
-        {
-            d_unique_out[0] = keys[0];
-        }
-
         // Do a one-phase scatter if (a) two-phase is disabled or (b) the average number of selected items per thread is less than one
         if (TWO_PHASE_SCATTER && (num_tile_segments > BLOCK_THREADS))
         {

            // Update tile status if this is not the last tile
            if (!IS_LAST_TILE)
                tile_state.SetInclusive(0, tile_aggregate);

            // Unset first flag in first tile
            segment_flags[0] = 0;

            // Initialize the segment index for the first scan item if necessary (the exclusive prefix for the first item is garbage)
            if (!HAS_IDENTITY_ZERO)


        __syncthreads();

        for (int item = threadIdx.x; item < num_tile_segments; item += BLOCK_THREADS)
        {
            d_unique_out[num_tile_segments_prefix + item] = temp_storage.raw_exchange_keys.Alias()[item];
        }
