N, X = map(int, input().split()) A = list(map(int, input().split())) non_ones = [] ones_indices = [] for idx, num in enumerate(A): if num == 1: ones_indices.append(idx) else: non_ones.append((num, idx)) # Sort non_ones by descending value, and then by descending index to prioritize larger indices for the same value non_ones.sort(key=lambda x: (-x[0], -x[1])) count_ones = len(ones_indices) def dfs(index, current_sum, selected): if current_sum > X: return None if index == len(non_ones): required = X - current_sum if required >= 0 and required <= count_ones: return (selected, required) return None # Try to include the current element num, idx = non_ones[index] res = dfs(index + 1, current_sum + num, selected + [idx]) if res is not None: return res # Skip the current element res = dfs(index + 1, current_sum, selected) return res result = dfs(0, 0, []) if result is None: print("No") else: selected_non_ones, required_ones = result answer = ['x'] * N for idx in selected_non_ones: answer[idx] = 'o' # Take the first 'required_ones' elements from ones_indices if required_ones > 0: selected_ones = ones_indices[:required_ones] for idx in selected_ones: answer[idx] = 'o' print(''.join(answer))