private static Moves performStep18(BotState state) {
		Moves out = new Moves();
		for (Region opponentBorderingRegion : state.getVisibleMap().getOpponentBorderingRegions(state)) {
			// > 3 so not to small attack
			if (opponentBorderingRegion.getIdleArmies() > 3) {
				List<Region> opponentNeighbors = opponentBorderingRegion.getEnemyNeighbors(state);
				List<Region> sortedOpponentNeighbors = RegionValueCalculator.sortRegionsByAttackRegionValue(state,
						opponentNeighbors);
				Region firstAttackedOpponentNeighbor = null;
				for (Region opponentNeighbor : sortedOpponentNeighbors) {
					if (opponentNeighbor.getIncomingArmies() > 0 && firstAttackedOpponentNeighbor == null) {
						firstAttackedOpponentNeighbor = opponentNeighbor;
					}
				}
				if (firstAttackedOpponentNeighbor != null) {
					AttackTransferMove atm = new AttackTransferMove(state.getMyPlayerName(), opponentBorderingRegion,
							firstAttackedOpponentNeighbor, opponentBorderingRegion.getIdleArmies());
					out.attackTransferMoves.add(atm);
					MovesPerformer.performAttackTransferMove(state, atm);
				}
			}
		}
		return out;
	}