Each language version is independently generated for its own context, not a direct translation.
🎭 1. 문제: 왜 기존 방법은 실패했을까? (과거의 방식)
기존의 인공지능 대화 학습 방식은 마치 "시험지 한 장을 보고 점수만 매기는" 방식이었습니다.
- 상황: AI 가 10 번의 대화를 나눴다고 가정해 봅시다.
- 기존 방식 (Outcome-only): 대화 전체가 끝난 후, "너는 잘했어, 100 점!" 혹은 "너는 못했어, 0 점!"이라고 한 번에 점수만 줍니다.
- 문제점:
- 만약 AI 가 처음 9 번은 아주 잘했는데, 마지막 10 번째 말 한마디로 모든 게 망쳐졌다면? AI 는 "내가 처음 9 번은 잘했구나"라는 걸 모릅니다. 그냥 "전체적으로 실패했다"고만 생각합니다.
- 반대로 처음부터 엉망이었지만, 운 좋게 마지막에 좋은 말을 해서 점수를 받았다면? AI 는 "처음부터 엉망인 게 괜찮구나"라고 착각할 수 있습니다.
- 핵심: 어떤 단계에서 잘했고, 어디서 잘못했는지 (Credit Assignment) 를 구분해 주지 못합니다.
🌟 2. 해결책: MAPO (새로운 방식)
저자들은 이 문제를 해결하기 위해 **"대화 중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중중