Análise de Impacto de Mudanças em Software
Preparação dos Dados
Gilson Pereira dos Santos Júnior
Universidade Federal de Campina Grande
Departamento de Sistemas e Computação
Disciplina: Mineração de Dados
Professor: Marcus Sampaio
A macro etapa de preparação dos dados engloba as etapas de seleção e préprocessamento dos dados. Nessa macro etapa, efetua-se a seleção da base de dados,
escolha atributos e discretização dos dados, além da sua limpeza e amostragem.
A base de dados selecionada foi o arquivo impact_analyser.txt apresentado no
Anexo I. Algumas características foram levadas em consideração para preparação dos
dados:
 Foram consideradas apenas mudanças realizadas nos arquivos .java (classes),
uma vez que os arquivos com essa extensão representam código-fonte do
software.

A estratégia utilizada para identificar os arquivos que participaram do mesmo
commit foi: commits realizados pelo mesmo autor, com o mesmo comentário e
que pertenciam a mesma janela de tempo. Nesse caso, utilizou-se uma janela
deslizante de 200 segundos como sugerido por Zimmerman et al. como forma
mais adequada para realizar esta tarefa. [ZW04]

Em seguida, filtrou-se os dados, selecionando apenas os arquivos envolvidos
em mais de 1 (um) commit e arquivos com quantidade de commits igual ou
superior a 20 (vinte). Esses valores foram escolhidos acreditando-se que
classes com apenas 1 (um) commit não representam mudanças, enquanto
classes com mais de 20 (vinte) commits representam mudanças estruturais e
não evolução de software que é nosso real interesse.
Após realizada a limpeza dos dados o arquivo no formato .arff foi gerado como
apresentado no Anexo II. Tal arquivo é constituído por 66 (sessenta e seis) atributos que
representam as classes que evoluiram durante o desenvolvimento do software.
Referência Bibliográficas
[ZW04] T. Zimmerman and P. Weißgerber (2004) " Preprocessing CVS data for finegrained analysis ", Proc. International Workshop on Mining Software Repositories
(MSR 2004) 2004.
ANEXO I – Arquivo impact_analyser.txt
Devido ao tamanho da base de dados este arquivo encontra-se em anexo e pode ser
acessado através do link impact_analyser.txt
ANEXO II – Arquivo impact_analyser.arff
@relation 'changelog-weka.filters.unsupervised.attribute.RemoveR7,19,28,31,34,38-40,42,47,49-55,58,62,76'
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/Algo
rithmsFactory.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/Impa
ctAnalyzer.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/Type
OfAlgorithm.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/Type
OfRefactoring.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/AnalysisStrategy.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/Command.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/RemoveCommand.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/ResultManager.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/ResultOfAnalisis.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/ResultOfAnalysis.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/TypeOfAlgorithm.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/command/AddEntityCommand.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/command/AddInheritanceCommand.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/command/ChangeAttributeCommand.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/command/ChangeReturnTypeCommand.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/command/ChangeSemanticsCommand.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/command/ChangeSignatureCommand.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/command/ChangeVisibilityCommandTest.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/command/Command.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/command/MethodNameChangeCommand.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/command/MethodParameterAddCommand.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/command/ModificationCommand.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/command/RemoveCommand.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/command/RemoveInheritanceCommand.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/command/test/AddInheritanceCommandTest.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/command/test/ChangeVisibilityCommandTest.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/command/test/MethodNameChangeCommandTest.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/command/test/RemoveInheritanceCommandTest.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/anal
ysisalgorithms/factory/AlgorithmsFactory.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/data
/ImpactedElementsRepository.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/data
/ImpactedTree.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/data
/ResultOfAnalysis.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/faca
de/AnalyzerFacade.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/test
/AllClassesInSuiteTest.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/test
/AllTest.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/test
/AllTests.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/test
/InheritanceRemoveTest.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/test
/TestRunner.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/test
/newformat/InheritanceChangeVisibilityTest.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/test
/newformat/InheritanceRemoveTest.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/test
cases/AllTests.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/test
cases/BaseTest.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/test
cases/ChangeSignatureTest.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/test
cases/UIAddTest.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/test
cases/UIChangeAttributeTest.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/test
cases/UIChangeReturnTypeTest.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/test
cases/UIChangeSemanticsTest.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/test
cases/UIChangeSignatureTest.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/test
cases/UIChangeVisibilityTest.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/test
cases/UIInheritanceRemoveTest.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/test
cases/UIOtherTest.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/test
cases/UIRemoveTest.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/test
cases/UITest.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/ui/A
nalyzerFacade.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/ui/I
nexistentCommandException.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/ui/I
nexistentTypeOfAlgorithmException.java {y,n}
@attribute
impact_analyzer/impact_analyzer/ImpactAnalyzer/src/impactanalyzer/ui/t
est/UITest.java {y,n}
@data
?,y,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,y
?,y,y,y,y,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,y,y,y
y,y,y,y,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,y,y,y
y,y,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y
?,y,?,?,y,y,y,?,y,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y
?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y
?,?,?,?,?,?,y,y,y,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y
?,?,?,?,?,?,y,y,y,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y
?,?,?,y,?,y,y,?,y,?,?,?,?,?,?,?,?,?,y,?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,y
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?
?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,y,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,y,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,y,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,y,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,y,?,?,?,?,?,y,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?
?,?,?,y,y,?,?,?,?,?,?,y,y,?,?,?,?,?,y,?,?,?,y,y,?,y,?,?,y,?,y,y,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?
?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,y,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?
?,?,?,y,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?
?,y,?,y,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,?,y,y,?,?,y,?,?,y,?,?,?,y,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,y,y,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,y,y,?,y,y,y,?,y,y,?,y,y,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,y,y,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,y,?,?,?,y,
y,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,y,y,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,y,?,?,?,?,
y,?,?,?,?,y,?,?,?,y,?,?,?,y,?,y,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?
?,y,?,?,y,?,?,?,?,?,?,y,y,y,y,y,y,?,y,?,?,y,y,y,y,y,?,y,?,?,?,?,y,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,y,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,y,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?
?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,y,?,?,?,?,?,?,?,?,?,?,y,?,y,?,?,y,y,y,y,?,?,?,y,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,y,?,?,?,?,?,?,y,y,y,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,y,?,y,?,?,?,?,?,?,?,?,?,y,?,?,?,?
?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,y,
?,?,?,?,?,y,?,y,y,?,y,?,y,y,?,y,y,y,?,?,?,?
?,?,?,y,?,?,?,?,?,?,?,?,?,y,?,y,y,?,?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,y,y,?,y,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,
?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,y,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,y,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,
?,y,y,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,y,?,?,?,?,?,?,y,y,?,?,?,
?,y,y,y,y,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,
?,?,?,?,?,?,y,?,?,?,?,?,?,y,y,?,y,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,
?,?,y,y,y,y,?,?,y,y,y,y,y,y,?,?,y,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,y,y,y,?,y,?,y,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,y,?,?,y,?,?,?,y,y,?,?,?,?,?,?,?,?,y,?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,y,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,y,?,?,?,?,?,?,?,y,y,y,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,y,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,y,?,?,y,?,?,?,?,y,?,?,?,?,?,?,?,?,y,?,?,?,y,?,?,?,?,?,?,?,y,y,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
?,?,?,?,?,?,?,?,?,?,?,?,y,?,?,?,?,?,y,?,?,?,?,y,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?