Puedes copiar cada archivo desde aquí, o clonar el repositorio FC_CConcurrente completo:
git clone https://github.com/gilde-valeria/FC_CConcurrente.gitArchivos
Archivos
CoarseCallable.java
Listas/callables/CoarseCallable.java
package callables;
import java.util.concurrent.Callable;
import lists.CoarseGrained;
public class CoarseCallable implements Callable<Boolean>{
private String item;
private CoarseGrained coarselist;//En este caso tiene como atributo a un tipo de lista CoarseGRained
private int num;
public CoarseCallable(String item,CoarseGrained coarselist,int num){
this.item = item;
this.coarselist= coarselist;
this.num = num;
}
@Override
public Boolean call(){
try{
if (this.num > 25 && this.num<100) {//Probabilidad de ejecutar contains de 75%
this.coarselist.contains(this.item);
//System.out.println("Thead name: "+ Thread.currentThread().getName()+" contains: "+this.item); //Para ver como se ejecutan
}
if (this.num < 13) {//Probabilidad de ejecutar add
//System.out.println("Thead name: "+ Thread.currentThread().getName()+" add: "+this.item); //Para ver como se ejecutan
this.coarselist.add(this.item);
}
else{
if (this.num < 25){//Probabilidad de ejecutar remove
//System.out.println("Thead name: "+ Thread.currentThread().getName()+" remove: "+this.item); //Para ver como se ejecutan
this.coarselist.remove(this.item);
}}
if (this.num == 110){//Para que un hilo imprima
try {
Thread.sleep(1000); // Sleeping for 100ms
}
catch (InterruptedException e) {
System.out.format("Interrupted Exception: " + e.getMessage());
e.printStackTrace();
}
this.coarselist.printList();
}
return true;
}
catch(Exception e){
return false;
}
}
}
LazyCallable.java
Listas/callables/LazyCallable.java
package callables;
import java.util.concurrent.Callable;
import lists.LazyList;
public class LazyCallable implements Callable<Boolean>{
private String item;
private LazyList lazylist;//En este caso tiene como atributo a un tipo de lista CoarseGRained
private int num;
public LazyCallable(String item, LazyList lazyList, int num){
this.item = item;
this.lazylist = lazylist;
this.num = num;
}
@Override
public Boolean call(){
try {
// System.out.println("Here___ call try");
if (this.num > 25 && this.num<100) {//Probabilidad de ejecutar contains de 75%
//System.out.println("Here___if contains");
this.lazylist.contains(this.item);
//System.out.println("Thead name: "+ Thread.currentThread().getName()+" contains: "+this.item); //Para ver como se ejecutan
}
if (this.num < 13) {//Probabilidad de ejecutar add
//System.out.println("Thead name: "+ Thread.currentThread().getName()+" add: "+this.item); //Para ver como se ejecutan
this.lazylist.add(this.item);
}
else{
if (this.num < 25){//Probabilidad de ejecutar remove
//System.out.println("Thead name: "+ Thread.currentThread().getName()+" remove: "+this.item); //Para ver como se ejecutan
this.lazylist.remove(this.item);
}}
if (this.num == 110){//Para que un hilo imprima
try {
Thread.sleep(10); // Sleeping for 100ms
}
catch (InterruptedException e) {
System.out.format("Interrupted Exception: " + e.getMessage());
e.printStackTrace();
}
System.out.println("Here before print");
this.lazylist.printList();
}
return true;
} catch (Exception e) {
return false;
// TODO: handle exception
}
}
}
LockFreeCallable.java
Listas/callables/LockFreeCallable.java
package callables;
import java.util.concurrent.Callable;
import lists.NonBlocking;
public class LockFreeCallable implements Callable<Boolean>{
private String item;
private NonBlocking locklist;//En este caso tiene como atributo a un tipo de lista LockFree
private int num;
public LockFreeCallable(String item, NonBlocking locklist, int num){
this.item = item;
this.locklist= locklist;
this.num = num;
}
@Override
public Boolean call(){
try {
if (this.num > 25 && this.num<100) {//Probabilidad de ejecutar contains de 75%
this.locklist.contains(this.item);
//System.out.println("Thead name: "+ Thread.currentThread().getName()+" contains: "+this.item);//Para ver como se ejecutan
}
if (this.num < 13) {//Probabilidad de ejecutar add
//System.out.println("Thead name: "+ Thread.currentThread().getName()+" add: "+this.item);//Para ver como se ejecutan
this.locklist.add(this.item);
}
else{
if (this.num < 25){//Probabilidad de ejecutar remove
//System.out.println("Thead name: "+ Thread.currentThread().getName()+" remove: "+this.item);//Para ver como se ejecutan
this.locklist.remove(this.item);
}}
if (this.num == 110){//Para que un hilo imprima
try {
Thread.sleep(1000); // Sleeping for 100ms
}
catch (InterruptedException e) {
System.out.format("Interrupted Exception: " + e.getMessage());
e.printStackTrace();
}
this.locklist.printlist();
}
return true;
} catch (Exception e) {
return false;
}
}
}
Executor.java
package executor;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import callables.*;
import lists.*;
import text.Set;
import java.util.Random;
public class Executor{
public static void main(String[] args) throws ExecutionException {
int numProcessors = Runtime.getRuntime().availableProcessors(); // El num de procesos que tiene tu compu
ExecutorService executor = Executors.newFixedThreadPool(numProcessors-1);//Creamos una pool de procesos de n hilos, intenta primero con tu num de procesos
CoarseGrained coarselist = new CoarseGrained(); //instancia de la clase
//LazyList lazylist = new LazyList();//instancia de la clase
//NonBlocking locklist = new NonBlocking();//instancia de la clase
Random rand = new Random(); //Para crear num randoms
Set set = new Set("alphabet");
System.out.println("Number of operations: "+ set.numOperations());
List<String> alphabetList = set.get();
try {
List<Future<Boolean>> futures = new ArrayList<Future<Boolean>>();
long startTime = System.nanoTime();
for (int i = 0; i < alphabetList.size(); i++) {//Vamos a crear distintas instancias de Tareas en el tamaño de la lista
int numRand = rand.nextInt(100);//Genero un numero random
futures.add(executor.submit(new CoarseCallable(alphabetList.get(i), coarselist,numRand))); //Para ejecutar CoarseList
//futures.add(executor.submit(new LazyCallable(alphabetList.get(i), lazylist,numRand))); // Para ejecutar LazyList
//futures.add(executor.submit(new LockFreeCallable(alphabetList.get(i), locklist,numRand))); //Para ejecutar LockFree
}
//CompletableFuture.anyOf(futures).join();
for (int i = 0; i < futures.size(); i++) {
while(!futures.get(i).isDone());
//Boolean result = futures.get(i).get();
//System.out.printf("\n Result: "+result);
}
long endTime = System.nanoTime();
System.out.println("Program took " +
(endTime - startTime)* 1.0E-6 + "ms") ;
} catch (Exception e) {
System.out.printf("Error %s\n", e.getMessage());
}
//Future<Boolean> result = executor.submit(new CoarseCallable("non", coarselist,110));//ejecuto la tarea con num 110 que corresponde a imprimir después de 100ms para CoarseList
//Future<Boolean> result = executor.submit(new LazyCallable("non", lazylist,110));//ejecuto la tarea con num 110 que corresponde a imprimir después de 100ms para LazyList
//Future<Boolean> result = executor.submit(new LockFreeCallable("non", locklist,110));//ejecuto la tarea con num 110 que corresponde a imprimir después de 100ms para LockFree
executor.shutdown();//Detengo la pool de hilos
}
}
CoarseGrained.java
Listas/lists/CoarseGrained.java
package lists;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
import nodes.Node;
public class CoarseGrained {
private Node head; //First node
private Node tail; //Last node
private Lock lock = new ReentrantLock();
public CoarseGrained(){
// Add sentinels to start and end
head = new Node(Integer.MIN_VALUE);
tail = new Node(Integer.MAX_VALUE);
head.next = this.tail;
}
public boolean add(String item) {
Node pred, curr;
int key = item.hashCode();
lock.lock();
try {
pred = head;
curr = pred.next;
while (curr.key < key) {
pred = curr;
curr = curr.next;
}
if (key == curr.key) {
return false;
} else {
Node node = new Node(item);
node.next = curr;
pred.next = node;
return true;
}
} finally {
lock.unlock();
}
}
public boolean remove(String item) {
Node pred, curr;
int key = item.hashCode();
lock.lock();
try {
pred = this.head;
curr = pred.next;
while (curr.key < key) {
pred = curr;
curr = curr.next;
}
if (key == curr.key) { // present
pred.next = curr.next;
return true;
} else {
return false; // not present
}
} finally { // always unlock
lock.unlock();
}
}
/**
* Test whether element is present
* @param item element to test
* @return true iff element is present
*/
public boolean contains(String item) {
Node pred, curr;
int key = item.hashCode();
lock.lock();
try {
pred = head;
curr = pred.next;
while (curr.key < key) {
pred = curr;
curr = curr.next;
}
return (key == curr.key);
} finally { // always unlock
lock.unlock();
}
}
public void printList(){
Node pred, curr;
pred = this.head;
curr = pred.next;
System.out.println("\n ->head:"+pred.item);
System.out.println("->"+curr.item+" key:"+curr.key);
while (curr.next != null) {
pred = curr;
curr = curr.next;
System.out.println("->"+curr.item+" key:"+curr.key);
}
}
}
LazyList.java
package lists;
import nodes.NodeLazy;
public class LazyList {
/**
* First list Node
*/
private NodeLazy head;
/**
* Constructor
*/
public LazyList() {
// Add sentinels to start and end
this.head = new NodeLazy(Integer.MIN_VALUE);
this.head.next = new NodeLazy(Integer.MAX_VALUE);
//System.out.println("Here___init");
}
/**
* Check that prev and curr are still in list and adjacent
*/
private boolean validate(NodeLazy pred, NodeLazy curr) {
return !pred.marked && !curr.marked && pred.next == curr;
}
/**
* Add an element.
* @param item element to add
* @return true iff element was not there already
*/
public boolean add(String item) {
System.out.println("Here___ add");
int key = item.hashCode();
while (true) {
NodeLazy pred = this.head;
NodeLazy curr = head.next;
while (curr.key < key) {
pred = curr; curr = curr.next;
}
pred.lock();
try {
curr.lock();
try {
if (validate(pred, curr)) {
if (curr.key == key) { // present
return false;
} else { // not present
NodeLazy Node = new NodeLazy(item);
Node.setNext(curr);
pred.next = Node;
return true;
}
}
} finally { // always unlock
curr.unlock();
}
} finally { // always unlock
pred.unlock();
}
}
}
/**
* Remove an element.
* @param item element to remove
* @return true iff element was present
*/
public boolean remove(String item) {
int key = item.hashCode();
while (true) {
NodeLazy pred = this.head;
NodeLazy curr = head.next;
while (curr.key < key) {
pred = curr; curr = curr.next;
}
pred.lock();
try {
curr.lock();
try {
if (validate(pred, curr)) {
if (curr.key != key) { // present
return false;
} else { // absent
curr.marked = true; // logically remove
pred.next = curr.next; // physically remove
return true;
}
}
} finally { // always unlock curr
curr.unlock();
}
} finally { // always unlock pred
pred.unlock();
}
}
}
/**
* Test whether element is present
* @param item element to test
* @return true iff element is present
*/
public boolean contains(String item) {
System.out.println("Here___ contains");
int key = item.hashCode();
NodeLazy curr = this.head;
while (curr.key < key)
curr = curr.next;
return curr.key == key && !curr.marked;
}
public void printList(){
System.out.println("Here___");
NodeLazy pred, curr;
pred = this.head;
curr = pred.next;
System.out.println("\n ->head:"+pred.item);
System.out.println("->"+curr.item+" key:"+curr.key);
while (curr.next != null) {
pred = curr;
curr = curr.next;
System.out.println("->"+curr.item+" key:"+curr.key);
}
}
}
NonBlocking.java
package lists;
import nodes.NodeAtomic;
import lists.Window;
import java.util.concurrent.atomic.AtomicMarkableReference;
public class NonBlocking {
NodeAtomic head;
public NonBlocking(){
this.head = new NodeAtomic(Integer.MIN_VALUE);
NodeAtomic tail = new NodeAtomic(Integer.MAX_VALUE);
while (!head.next.compareAndSet(null, tail, false, false));
}
public boolean add(String item) {
int key = item.hashCode();
boolean splice;
while (true) {
// find predecessor and curren entries
Window window = find(head, key);
NodeAtomic pred = window.pred, curr = window.curr;
// is the key present?
if (curr.key == key) {
return false;
} else {
// splice in new node
NodeAtomic node = new NodeAtomic(item);
node.next = new AtomicMarkableReference(curr, false);
if (pred.next.compareAndSet(curr, node, false, false)) {
return true;
}
}
}
}
public boolean remove(String item) {
int key = item.hashCode();
boolean snip;
while (true) {
// find predecessor and curren entries
Window window = find(head, key);
NodeAtomic pred = window.pred, curr = window.curr;
// is the key present?
if (curr.key != key) {
return false;
} else {
// snip out matching node
NodeAtomic succ = curr.next.getReference();
snip = curr.next.attemptMark(succ, true);
if (!snip)
continue;
pred.next.compareAndSet(curr, succ, false, false);
return true;
}
}
}
public boolean contains(String item) {
int key = item.hashCode();
// find predecessor and curren entries
Window window = find(head, key);
NodeAtomic pred = window.pred, curr = window.curr;
return (curr.key == key);
}
/**
* If element is present, returns node and predecessor. If absent, returns
* node with least larger key.
* @param head start of list
* @param key key to search for
* @return If element is present, returns node and predecessor. If absent, returns
* node with least larger key.
*/
public Window find(NodeAtomic head, int key) {
NodeAtomic pred = null, curr = null, succ = null;
boolean[] marked = {false}; // is curr marked?
boolean snip;
retry: while (true) {
pred = head;
curr = pred.next.getReference();
while (true) {
succ = curr.next.get(marked);
while (marked[0]) { // replace curr if marked
snip = pred.next.compareAndSet(curr, succ, false, false);
if (!snip) continue retry;
curr = pred.next.getReference();
succ = curr.next.get(marked);
}
if (curr.key >= key)
return new Window(pred, curr);
pred = curr;
curr = succ;
}
}
}
public void printlist() {
NodeAtomic pred, curr;
pred = this.head;
curr = pred.next.getReference();
System.out.println("\n ->head:"+pred.item);
//System.out.println("->"+curr.item+" key:"+curr.key);
while (curr.next.getReference() != null) {
curr = pred.next.getReference();
//succ = curr.next.get(marked);
System.out.println("->"+curr.item+" key:"+curr.key);
pred = curr;
//curr = succ;
}
//}
}
}
Window.java
package lists;
import nodes.NodeAtomic;
public class Window {
public NodeAtomic pred;
public NodeAtomic curr;
public Window(NodeAtomic pred, NodeAtomic curr) {
this.pred = pred; this.curr = curr;
}
}
Node.java
package nodes;
public class Node {
public String item;
/**
* item's hash code
*/
public int key;
/**
* next Node in list
*/
public Node next;
/**
* Constructor for usual Node
* @param item element in list
*/
public Node(String item) {
this.item = item;
this.key = item.hashCode();
}
/**
* Constructor for sentinel Node
* @param key should be min or max int value
*/
public Node(int key) {
this.item = null;
this.key = key;
}
}
NodeAtomic.java
package nodes;
import java.util.concurrent.atomic.AtomicMarkableReference;
public class NodeAtomic {
/**
* actual item
*/
public String item;
/**
* item's hash code
*/
public int key;
/**
* next node in list
*/
public AtomicMarkableReference<NodeAtomic> next;
/**
* Constructor for usual node
* @param item element in list
*/
public NodeAtomic(String item) { // usual constructor
this.item = item;
this.key = item.hashCode();
this.next = new AtomicMarkableReference<NodeAtomic>(null, false);
}
/**
* Constructor for sentinel node
* @param key should be min or max int value
*/
public NodeAtomic(int key) { // sentinel constructor
this.item = null;
this.key = key;
this.next = new AtomicMarkableReference<NodeAtomic>(null, false);
}
}
NodeLazy.java
package nodes;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class NodeLazy {
/**
* actual item
*/
public String item;
/**
* item's hash code
*/
public int key;
/**
* next Node in list
*/
public NodeLazy next;
/**
* If true, Node is logically deleted.
*/
public boolean marked;
/**
* Synchronizes Node.
*/
public Lock lock;
/**
* Constructor for usual Node
* @param item element in list
*/
public NodeLazy(String item) { // usual constructor
this.item = item;
this.key = item.hashCode();
this.next = null;
this.marked = false;
this.lock = new ReentrantLock();
}
/**
* Constructor for sentinel Node
* @param key should be min or max int value
*/
public NodeLazy(int key) { // sentinel constructor
this.item = null;
this.key = key;
this.next = null;
this.marked = false;
this.lock = new ReentrantLock();
}
public void setNext(NodeLazy ref){
this.next = ref;
}
/**
* Lock Node
*/
public void lock() {lock.lock();}
/**
* Unlock Node
*/
public void unlock() {lock.unlock();}
}
Set.java
package text;
import java.util.Arrays;
import java.util.List;
public class Set {
String name;
int size;
String[] items = {"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r",
"s","t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i",
"a","e","i","o","u","e","o","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i","o","u","e","o","j","h","l","p","o","r","s",
"t","u","v","w","x","y","z","k","e","o","j","h","l","p","o","r","s","j","h","l","p","o","r","s","t","u","v","w","x","y","z","a","e","i"};
public Set(String name){
this.name = name;
this.size = Arrays.asList(this.items).size();
}
public List<String> get(){
return Arrays.asList(this.items);
}
public int numOperations(){
return this.size;
}
}