/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
class CellHelper<T> {
final T[] mValues;
final Class<T> cls;
public CellHelper(T[] values, Class<T> c) {
mValues = values;
cls = c;
}
public T getCell(int index) {
if (index < mValues.length ) {
return mValues[index];
}
}
}
enum SomeEnumClass {
ONE(1), TWO(2), THREE(3);
SomeEnumClass(int n){}
private static final CellHelper<SomeEnumClass> helper = new CellHelper(SomeEnumClass.values(), SomeEnumClass.class);
public static SomeEnumClass getCell(int i) {return helper.getCell(i);}
}
enum OtherEnumClass {
Monday(1), Tuesday(2), Wednesday(3), Thrusday(4), Friday(5), Saturday(6), Sunday(7);
OtherEnumClass(int n){}
private static final CellHelper<OtherEnumClass> helper = new CellHelper(OtherEnumClass.values(), OtherEnumClass.class);
public static OtherEnumClass getCell(int i) {return helper.getCell(i);}
}
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
System.
out.
println(SomeEnumClass.
getCell(1)); System.
out.
println(OtherEnumClass.
getCell(1)); }
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgoKY2xhc3MgQ2VsbEhlbHBlcjxUPiB7CglmaW5hbCBUW10gbVZhbHVlczsKCWZpbmFsIENsYXNzPFQ+IGNsczsKCXB1YmxpYyBDZWxsSGVscGVyKFRbXSB2YWx1ZXMsIENsYXNzPFQ+IGMpIHsKCQltVmFsdWVzID0gdmFsdWVzOwoJCWNscyA9IGM7Cgl9CglwdWJsaWMgVCBnZXRDZWxsKGludCBpbmRleCkgewoJCWlmIChpbmRleCA8IG1WYWx1ZXMubGVuZ3RoICkgewogICAgICAgICAgICByZXR1cm4gbVZhbHVlc1tpbmRleF07ICAgICAgICAgICAgICAKICAgICAgICB9CiAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCAiICsgY2xzLmdldFNpbXBsZU5hbWUoKSArICIgdmFsdWU6ICIgKyBpbmRleCk7Cgl9Cn0KCmVudW0gU29tZUVudW1DbGFzcyB7CiAgICBPTkUoMSksIFRXTygyKSwgVEhSRUUoMyk7CiAgICBTb21lRW51bUNsYXNzKGludCBuKXt9CiAgICBwcml2YXRlIHN0YXRpYyAgZmluYWwgQ2VsbEhlbHBlcjxTb21lRW51bUNsYXNzPiBoZWxwZXIgPSBuZXcgQ2VsbEhlbHBlcihTb21lRW51bUNsYXNzLnZhbHVlcygpLCBTb21lRW51bUNsYXNzLmNsYXNzKTsKICAgIHB1YmxpYyBzdGF0aWMgU29tZUVudW1DbGFzcyBnZXRDZWxsKGludCBpKSB7cmV0dXJuIGhlbHBlci5nZXRDZWxsKGkpO30KfQoKZW51bSBPdGhlckVudW1DbGFzcyB7CiAgICBNb25kYXkoMSksIFR1ZXNkYXkoMiksIFdlZG5lc2RheSgzKSwgVGhydXNkYXkoNCksIEZyaWRheSg1KSwgU2F0dXJkYXkoNiksIFN1bmRheSg3KTsKICAgIE90aGVyRW51bUNsYXNzKGludCBuKXt9CiAgICBwcml2YXRlIHN0YXRpYyAgZmluYWwgQ2VsbEhlbHBlcjxPdGhlckVudW1DbGFzcz4gaGVscGVyID0gbmV3IENlbGxIZWxwZXIoT3RoZXJFbnVtQ2xhc3MudmFsdWVzKCksIE90aGVyRW51bUNsYXNzLmNsYXNzKTsKICAgIHB1YmxpYyBzdGF0aWMgT3RoZXJFbnVtQ2xhc3MgZ2V0Q2VsbChpbnQgaSkge3JldHVybiBoZWxwZXIuZ2V0Q2VsbChpKTt9CgoKfQoKLyogTmFtZSBvZiB0aGUgY2xhc3MgaGFzIHRvIGJlICJNYWluIiBvbmx5IGlmIHRoZSBjbGFzcyBpcyBwdWJsaWMuICovCmNsYXNzIElkZW9uZQp7CglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KCXsKCQlTeXN0ZW0ub3V0LnByaW50bG4oU29tZUVudW1DbGFzcy5nZXRDZWxsKDEpKTsKCQlTeXN0ZW0ub3V0LnByaW50bG4oT3RoZXJFbnVtQ2xhc3MuZ2V0Q2VsbCgxKSk7Cgl9Cn0=