a:6:{i:0;s:10668:"				<div class="h1"><h1>6 Days Andaman Tour Package</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.andamanleisure.co.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.andamanleisure.co.in/packages.htm" title="Packages">Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>6 Days Andaman Tour Package</p>
				<br />
				
								
						<script language="javascript"> 
							function topDestinationToggle(showHideDiv, switchTextDiv) {
							var ele = document.getElementById(showHideDiv);
							var text = document.getElementById(switchTextDiv);
							if(ele.style.display == "block") {
								ele.style.display = "none";
							  text.innerHTML = "View More &#9660;";
							}
							else {
							  ele.style.display = "block";
							  text.innerHTML = "View Less &#9650;";
							}
							}
		                </script>
											<script type="text/javascript">			
					(function($){	
					  $(function(){
						$('[id^=detailslider]').each(function(){
							$(this).DG_Slider({
								auto: true, mode:'fade', pager:true, pagerType:'short',controls:true
							});
						})
				
						$('a[rel=gall]').fancybox()
					  });	
					}(jQuery))
					</script>
					
					<br />
					<div class="data">
					<table class="w100 formTable bdr0 imgWidth">
					<tr>
					<td class="p10px">
					<table class="w100 packageForm">
											<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						5 Nights / 6 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Port Blair</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat"><span class="dif">On Request</span></td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.andamanleisure.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="6 Days Andaman Tour Package - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="84154"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
											<td class="p10px vat imgWidth150 w150px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" >
															<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w150px h150px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_1/26949/148589.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_1/26949/148589.jpg"  width="150" height="150"    alt="6 Days Andaman Tour Package" title="6 Days Andaman Tour Package" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
											<div class="headHr">
			            <p class="p7px b pl10px xlarge">Tour Itinerary</p>
			            </div>
			            
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 1:</b> Arrival at Port Blair
								</p>
								<p class="aj">Upon your arrival in Port Blair in the morning/afternoon, meet our tour representative who assists you in smooth transfer to the hotel in Port Blair. On arrival, check in at the hotel. Rest for a while.<br />
<br />
Port Blair: For centuries, the Andaman and Nicobar Islands were cloaked in mystery due to their inaccessibility. These islands are shimmering like emeralds in the Bay of Bengal and present a scenic and picturesque landscape. The dense forests cover these islands and the innumerable exotic flowers & birds create a romantic and lovely atmosphere.<br />
<br />
After lunch, you visit the extremely popular Cellular Jail. Formerly known as Kala Pani, it was a colonial prison used by the British to deportee political prisoners to this remote location. Next in line is visit to the Water Sports Complex (closed on: Wednesday). Partake in water activities of your interest such as speedboat ride, banana boat ride, Jet Ski, Glass Bottom Boat ride and so on. (You can carry extra clothes for change). Relaxing at a seaside café is another option.<br />
<br />
The evening is scheduled for enjoying the famous Light and Sound Show at Cellular Jail. The show speaks volumes about the saga of countless martyrs of Indian Independence struggle who laid down their lives. It is conducted every evening within the premises of cellular jail. By evening, return back to the hotel.<br />
<br />
Stay overnight in the hotel.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 2:</b> Port Blair - Havelock by Ferry (2.5 Hour)
								</p>
								<p class="aj">The day starts early. You board the morning ferry from Port Blair to Havelock Island. Carry packed breakfast. This journey is of around 2.5 hours. On reaching, get transferred to the respective hotels to complete the check-in. In the evening, you visit the popular Radhanagar Beach, which is also known as Beach No 7. It was also been rated as the 'Best Beach in Asia' by the Time Magazine. Back to the hotel for unwinding.<br />
<br />
Overnight stay in the hotel.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 3:</b> Havelock (excursion to Elephant Beach)
								</p>
								<p class="aj">The day starts early. You are going for a memorable excursion to the beautiful Elephant beach. The car will come at 07:00 hours, be ready as the boat will leave the jetty at 07:30 hours. The boat ride from Havelock to Elephant beach takes around 23 minutes. This surely is going to be an unforgettable snorkeling experience for you.<br />
<br />
Get into the snorkeling gear and get all set to explore the colorful underwater world. The reef close to the shore is around 1 meter deep and the larger reef is formed by an amazing variety of corals and marine life. After the snorkeling session, you can simply relax at the beach. The atmosphere is serene and the sight is soothing. Do not forget to catch the beauty of this white-sand beach in your camera. (Note: Snorkeling at the Elephant beach is subject to weather conditions.)<br />
<br />
Return to Havelock.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 4:</b> Havelock - Neil Island by Ferry (1 Hour)
								</p>
								<p class="aj">Post breakfast in the morning, check out from the hotel. Board a ferry from Havelock and get transferred to Neil. On arrival, you will be transferred to the respective hotels for check-in. In the evening, enjoy visit to the very popular Bharatpur beach and Laxmanpur Beach.<br />
<br />
Bharatpur Beach: Bharatpur Beach is a beautiful white sandy beach. Here one can relax, enjoy a leisurely walk on the sands and treat their eyes with the coral views. The Sea around the Jetty area is full of corals and schools of fishes swimming around.<br />
<br />
Laxmanpur Beach: Located 2 kilometers north of Neil Jetty, Laxmanpur Beach is a secluded beach scattered with white shell sand with shallow water offering snorkeling opportunities. Swimming and sun basking are other two options. Tourists can enjoy spectacular sunset views from the beach.<br />
<br />
Stay overnight in the hotel.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 5:</b> Neil Island - Port Blair by Ferry
								</p>
								<p class="aj">After breakfast at the hotel, check-out and go on-board the ferry for your onward journey to Port Blair. On arrival in Port Blair, the rest of the day is at leisure. Explore the surroundings on your own. Overnight stay in the hotel.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 6:</b> Departure from Port Blair
								</p>
								<p class="aj">Today, you will say final goodbye to the city of Port Blair. Later, check out of the hotel and get transferred to the airport for journey back home.</p>
								</td>
								</tr>
								</table>					
								</div>						<br />
												 <p class="headHr p7px b pl10px xlarge">Tour Detail</p>
			             <div class="data p15px aj">
										
						<p class="large b mb5px dif">Inclusions :</p>
						<ul>
															<li>Hotel</li>
															</ul>
						<br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>* Some Advance Percentage of total booking amount 
* Airfare/Transport fare to be paid full at one time in advance.~^#^~* Upon cancellation, refund will be made after deducting the Retention Amount. 
* Retention Amount varies as per the number of days left before your package start date. ~^#^~												</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.andamanleisure.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="6 Days Andaman Tour Package - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="84154"/>
						</form>
						</div>
						
						";i:1;s:66:"Book 6 Days Andaman Tour Package - 5 Nights / 6 Days Tour Packages";i:2;s:125:"book 6 days andaman tour package - 5 nights / 6 days tour packages, beach and islands tour packages, port blair tour packages";i:3;s:167:"Andaman Leisure Pvt. Ltd. offers 6 Days Andaman Tour Package - 5 Nights / 6 Days tour package, budget Beach and Islands tour packages for Port Blair at exciting price.";i:4;s:409:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Port Blair"        
		                 },
		      "description": "",
		      "name": "6 Days Andaman Tour Package",
		      "telephone": "+91-9476010441"
		    }
		    </script>
			";i:5;N;}