import java.util.*;

public class CollectionUtils {
    
    // List operations
    public static <T> List<T> createList(T... elements) {
        return new ArrayList<>(Arrays.asList(elements));
    }
    
    public static <T> void addAll(List<T> list, Collection<T> collection) {
        list.addAll(collection);
    }
    
    public static <T> boolean contains(List<T> list, T element) {
        return list.contains(element);
    }
    
    // Set operations
    public static <T> Set<T> createSet(T... elements) {
        return new HashSet<>(Arrays.asList(elements));
    }
    
    public static <T> Set<T> union(Set<T> set1, Set<T> set2) {
        Set<T> result = new HashSet<>(set1);
        result.addAll(set2);
        return result;
    }
    
    public static <T> Set<T> intersection(Set<T> set1, Set<T> set2) {
        Set<T> result = new HashSet<>(set1);
        result.retainAll(set2);
        return result;
    }
    
    // Map operations
    public static <K, V> Map<K, V> createMap() {
        return new HashMap<>();
    }
    
    public static <K, V> void putAll(Map<K, V> map, Map<K, V> other) {
        map.putAll(other);
    }
    
    public static <K, V> V getOrDefault(Map<K, V> map, K key, V defaultValue) {
        return map.getOrDefault(key, defaultValue);
    }
    
    // Queue operations
    public static <T> Queue<T> createQueue() {
        return new LinkedList<>();
    }
    
    public static <T> void enqueue(Queue<T> queue, T element) {
        queue.offer(element);
    }
    
    public static <T> T dequeue(Queue<T> queue) {
        return queue.poll();
    }
}