a:6:{i:0;s:10703:"				<div class="h1"><h1>6 Days Andaman Tour Package</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.onyourmarkstravel.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.onyourmarkstravel.com/tour-packages.htm" title="Tour Packages">Tour 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, Havelock</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.onyourmarkstravel.com/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="109602"/>
						</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_16/465683/181148.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_16/465683/181148.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.onyourmarkstravel.com/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="109602"/>
						</form>
						</div>
						
						";i:1;s:66:"Book 6 Days Andaman Tour Package - 5 Nights / 6 Days Tour Packages";i:2;s:135:"book 6 days andaman tour package - 5 nights / 6 days tour packages, beach and islands tour packages, port blair, havelock tour packages";i:3;s:184:"Book 6 Days Andaman Tour Package - 5 Nights / 6 Days tour packages from OnyourmarksTravel - Get attractive 5 Nights / 6 Days Beach and Islands  tour packages for  Port Blair, Havelock.";i:4;s:419:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Port Blair, Havelock"        
		                 },
		      "description": "",
		      "name": "6 Days Andaman Tour Package",
		      "telephone": "+91-8334014211"
		    }
		    </script>
			";i:5;N;}